home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1996-04-15 | 397.6 KB | 17,092 lines
FMORECTLEaddvar(%var%u+-1=u) inpline(seeking.%NODE%,1) setequal(p=%ARESP%) inpline(seeking.%NODE%,2) if (&p)=(1) then seekto(/:lastmsg/,%ARESP%,^:u^) if (&p)=(2) then seekfrom(/:lastmsg/,%ARESP%,^:u^) if (&p)=(3) then seekdesc(/:lastmsg/,%ARESP%,^:u^) if (&p)=(4) then seektext(/:lastmsg/,%ARESP%,^:u^) setequal(u=0) return WIPCHGCTL∩*thetop setnv(high=22) setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=chg)) *initBox setequal(c=14~listbox~%maxarea%~22~) jump (wipc) goto (listfa) *GetResp0 setequal(c=0A~) jump (wipc) jump (getInput) writeln(Response from user: "%resp%") if (%nv%wiprestreq%)=(1) then goto (thetop) if (%resp%)=(Help) then goto (olhelp) if (%resp%)=(Exit) then goto (ret4) if (%resp%)=(quit) then goto (ret4) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) if (%var%b)=(-1) then goto (more) setequal(/resp=%var%b) goto (sa) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif ;if (%nv%wipc%)=(searchtext) then setNv(key=%nv%Ctext%) *NoCmnd setnv(wtxt=) goto (getResp0) *listfa setequal(d=0) setnv(d=0) *more setequal(d=%nv%d%) setequal(u=0) *rt inc(d) if (%var%d)>(%maxarea%) then goto (nomore) addvar(%var%d+-1=e) multvar(%var%e*132=e) addvar(%var%e+11=e) fread(msgareas.bbs,%var%e,40,n) addvar(%var%e+116=e) fread(msgareas.bbs,%var%e,2,a) cvi(%var%a) if (%aresp%)>(%sec%) then goto (rt) setequal(e=%var%d) setlen(e=5) inc(u) setequal(c=07~listbox~%var%e %var%n~) writeln(%var%e %var%n) if (%nv%high%)<>() then goto (nh) if (%var%u)=(%resp%) then goto (ga0) *nh setnv(d=%var%d) if (%nv%high%)<>() then jump (wipc) setequal(d=%nv%d%) if (%nv%high%)=() then goto (rt) if (%var%u)>(%nv%high%) then goto (donef) goto (rt) *NoMore if (%nv%high%)=() then goto (ga0) ; writeln(No more matches to the text you specified could be found.) ; setequal(c=13~No more matches to the text you specified could be found.~End of List~1~) ; jump (okbox0) goto (donef) ; goto (getresp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(50) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *wipask loadsub(control\wipask.ctl) ret *getinput writeln(Waiting for input from remote user.) setequal(y=180) jump (wipask) if (%aresp%)<>(24) then ret loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) jump (wipask) if (%aresp%)=(24) then loadmem(control\timeout.ctl) ret *donef ;inc(d) setnv(d=%var%d) write(Updating list box on user's screen ... ) setequal(c=07~listbox~-1~) jump (wipc) setequal(c=0F~listbox~Change Conference~1~1~2~) jump (wipc) setequal(c=0F~RecCount~22~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) setequal(c=0A~) jump (wipc) writeln(Done!) goto(getresp0) *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *notext writeln(No text was specified. Enter some text to search for and try again...) setequal(c=13~No text was specified. Please enter some text to search for and try again or click "quit" to exit.~No Text Specified~1~) jump (okbox0) goto (getresp0) *sa MenuEqual(/RESP=%RESP%) Number(%RESP%) ifnottrue(goto(bds)) setequal(b=%resp%) CmpValO(%MAXAREA%,%var%b) IfTrue (goto(bds)) setnv(high=) goto (listfa) *ga0 setequal(/resp=%var%d) setequal(b=%var%d) setnv(d=%var%d) SelArea(%var%b) EnufSec(%AREASEC%) IfnotTrue(Goto (bds)) ListFile(areas\farea%var%b) ;upload areas are AREAS\FAU%VAR%B if (%FAREA%)=(AREAS\FAREA%var%b) then goto (fsetup) goto (seled) *fsetup selfarea(1) setequal(/lastdown=1) *seled setequal(c=13~Area #%var%b: %AREANAME% is now selected! ) if (%AREAPVT%)=(Y) then setequal(c=%var%cPrivate mail is allowed in this area) if (%AREAPVT%)=(N) then setequal(c=%var%cNo private mail is allowed in this area) if (%AREAFPUB%)=(Y) then setequal(c=%var%c, All messages are forced public) if (%AREAFPVT%)=(Y) then setequal(c=%var%c, All messages are forced private) if (%MSGNET%)=(Y) then setequal(c=%var%c, Netmail is supported in this area) if (%MSGFNET%)=(Y) then setequal(c=%var%c, All mail in this area is Netmail) log(--,Joined Conference #%var%b) setequal(c=%var%c~Area Selected!~1~) jump (okbox0) setnv(dispdir=areas\) loadsub(control\newdisp.ctl,setnv(file=welc%nv%d%)) setnv(d=) SetEqual(/LASTMSG=%var%b) seek(areas\news/:lastmsg/.asc) iftrue(loadmem(control\macros\cnfnews.ctl)) Return *bds loadmem(control\macros\badsel.ctl) *okbox0 Jump (wipc) *tryr0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (tryr0) ret *ret4 inpclose return *OlHelp loadsub(control\exitwip.ctl) SetNv(AtPrompt=Yes) SetNv(Helpoption=7) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) goto (thetop) CHATLOGCTL if (%NV%logchat%)<>() then setequal(b=[Chat log closed]) setlen(b=80) localwrite(1,12,7,1,%VAR%B) jump (closeChatLog) return endif setequal(b=[Now logging to LOGS\CHAT.%NODE%]) setlen(b=80) localwrite(1,12,7,1,%VAR%B) setnv(logchat=logs\chat.%NODE%) appendto(%NV%logchat%,-----------------------------------------------------------) appendto(%NV%logchat%,[Logging chat session between %sysop% and %name% on %date% at %time%]) return *closeChatLog jump (logSysToDisk) jump (logUsrToDisk) appendto(%NV%logchat%,[Ending chat log at %time% on %date%]) setnv(logchat=) ret *logSysToDisk appendto(%NV%logchat%,SYSOP: %NV%sysline%) ret *logUsrToDisk appendto(%NV%logchat%,USER: %NV%usrline%) ret FORW0CTL╡menuask(%NOCR%&CR&&3&Forward message to which user?&12&: &15&*) seekuser(%RESP%) say() IfNotTrue (setequal(a=0)) ifnottrue (return) say(&CR&&11&Forwarding Message...*) iftrue (setequal(a=%NDNUMB%)) if (%MSGPVT%)=(PRIVATE) then setequal(k=Yes) notif (%MSGPVT%)=(PRIVATE) then setequal(k=No) nicequal(b=%MSGTO%) zap(%pbtemp%forw.%NODE%) kill(%pbtemp%forw1.%node%) capture(%pbtemp%forw1.%NODE%) loadexec(command.com,/c copy %pbtemp%forw.%NODE%+%pbtemp%forw1.%NODE% %pbtemp%forwrd.%NODE%) inittxt import(%pbtemp%forwrd.%NODE%,,1,100) writemsg(/:LASTMSG/,%RESP%,%MSGFROM%,%MSGDESC%,%var%a,%var%k,0,%MSGNET%,%MSGATTNAME%) say(Done!) himsg(/:LASTMSG/) setequal(f=%ARESP%) return WSACTL¿setequal(g=1) display(display\wsearch) say(&3&Please file to search for &11&(Wildcards are valid)&12&: &14&( )&15&*) setequal(h=0) back(13) setequal(y=20) menuask(%CRON%%LEN%12%*) if (%RESP%)=(<CR>) then Return find(%resp%,.) ifnottrue(combine(%resp%+.*=e)) ifnottrue(setequal(/resp=%var%e)) setequal(n=%RESP%) log(--,Wildcard Search for: %var%n) defpause($7$&0&[More?]$0$&3& (&11&S&3&)top, (&11&N&3&)onstop, (&11&V&3&)iew, (&11&D&3&)ownload, (&11&T&3&)ag, (&11&H&3&)elp or (&11&C&3&)ontinue?&12&: &7&) defPif(s:stop,n:nonstop,v:view2,h:fhlp,t:tag2,d:down2) clearscr say(&11&(Spacebar) Aborts. &14&Searching file database for "%var%n". . .&CR&) spause(3) goto (enew) *stsearch selfarea(%var%g) eline(79) enufsec(%FILSEC%) ifNotTrue (goto (skcheck)) *csearch say(&7&Searching file area: %FILNAME%|) if (%CD%)=(No) then wsearch(%FILPATH%files.bbs,12,15,7,11,3,%var%n,1,1) if (%CD%)=(Yes) then wsearch(%CDPath%%filarea%\files.bbs,12,15,7,11,3,%var%n,1,1) ifTrue (goto (enew)) ifkey( ) ifTrue (goto (enew)) ;did user hit stop? localkey(1) notif (%ARESP%)=(No) then goto (enew) *skcheck if (&g)=(%maxfarea%) then goto (enew) inc(g) goto (stsearch) *enew setequal(g=1) if (%var%h)=(%maxarea%) then goto (res) inc(h) selarea(%var%h) enufsec(%areasec%) ifnottrue(goto (enew)) listfile(areas\farea%var%h) notif (%farea%)=(AREAS\FAREA%var%h) then goto (enew) goto (stsearch) *res eline(79) selarea(/:lastmsg/) selfarea(/:LASTDOWN/) setequal(k=0) defpause($7$&0&[Send more text?]$0$&3& (&11&S&3&)top, (&11&N&3&)onstop or (&11&C&3&)ontinue?&12&: &7&) defPif(s:stop,n:nonstop) ;define our pause prompt... display(display\sdone) Return *view2 setequal(k=%ARESP%) loadsub(control\macros\zview.ctl) goto (blist2) *tag2 setequal(k=%ARESP%) loadsub(control\macros\tfiles.ctl) goto (blist2) *down2 setequal(k=%ARESP%) loadsub(control\macros\down.ctl) selfarea(/:Lastdown/) goto (blist2) *blist2 spause(0) clearscr goto (stsearch) *fhlp defpause($7$&0&[Send more text?]$0$&3& (&11&S&3&)top, (&11&N&3&)onstop or (&11&C&3&)ontinue?&12&: &7&) defPif(s:stop,n:nonstop) setequal(k=%ARESP%) display(display\help\lst,/:SEC/) goto (blist2) NUMBTAGCTL{ setequal(/nvdefpause=%defpause%) setequal(/nvdefpif=%defpif%) defpause($7$&0&[Send more text?]$0$&3& (&11&S&3&)top, (&11&N&3&)onstop or (&11&C&3&)ontinue?&12&: &7&) defPif(s:stop,n:nonstop) ;linefeed(1) setequal(/nvfb=%var%f) setequal(/nvyb=%var%y) setequal(y=) *getr len(%var%y) if (%aresp%)=(0) then goto (entern) goto (parseY) *enterN say( |) say(&15&Please enter the numbers of the files to tag&12&: &14&*) ask(%NOCR%%LEN%50%*) len(%resp%) back(%aresp%) menuequal(y=%resp%) if (%resp%)=() then goto (retn) *parseY fcomma(y) setequal(/resp=%var%y) find(&y, ) if (%aresp%)=(0) then setequal(y=) if (%aresp%)=(0) then goto (proce) addvar(%aresp%+-1=b) get(%var%y,1,%var%b) setequal(/resp=%aresp%) addvar(%var%b+2=b) get(%var%y,%var%b,100) setequal(y=%aresp%) *proce setequal(c=0) setequal(e=0) number(%Resp%) ifnottrue (goto (PassNumbTag)) cmpvalo(%NUMBTO%,%Resp%) iftrue(goto (getr)) setequal(b=%RESP%) *outta setequal(/resp=%tfiles%b%) *passNumbTag seek(%pbtemp%tagged.%NODE%) setequal(v=%aresp%) if (%resp%)=() then goto (entern) *stseek adddef(.%DEFEXT%) setequal(r=%resp%) seek(passfile.lst) ifnottrue(goto(nopass)) inpopen(passfile.lst) setequal(a=%resp%,) len(%var%a) setequal(c=%aresp%) do inpread setequal(d=%aresp%) get(&d,1,%var%c) if (%aresp%)=(%var%a) then goto (el) fendif(nopass) loop *el inc(c) get(&d,%var%c,100) setequal(a=%aresp%) Say(&15&Please enter the password for this file&12&: &14&*) cgetpass(o) if (%resp%)=(%var%a) then goto (nopass) inpclose goto(fname) *nopass setequal(/resp=%var%r) inpclose setequal(p=%RESP%) menuequal(f=%resp%) seekfall(%var%p) If (%ARESP%)=(INVALID) then goto (invfn) if (%ARESP%)=(No) then goto (nothere) If (%ARESP%)=(NOT ENOUGH) then goto (notenuf) selfarea(%aresp%) if (&v)=(Yes) then goto (sometagged) *doAdd size(%filpath%%var%p) ttime(%aresp%) setequal(v=%ttim%) if (%free%)=(No) then addvar(0%nv%totaltime%+%var%v=q) setequal(/nvTotalTime=%var%q) endif cmpval(0%nv%totaltime%,/:left/) ifnottrue(goto(notenuftime)) AppendTo(%pbtemp%tagged2.%NODE%,%FILPATH%%var%p) AppendTo(%pbtemp%tagged.%NODE%,%var%p) AppendTo(%pbtemp%free.%NODE%,%FREE%) selfarea(/:lastdown/) zap(%pbtemp%tsize.%node%,%nv%totaltime%) if (%X%)<(50) then goto (begintag) say( |) eline(79) *beginTag Say( &14&%var%f&15& tagged. *) len(%var%f) addvar(%aresp%+21=b) back(%var%b) goto(getr) *sometagged seekfile(%pbtemp%tagged.%NODE%,%VAR%F) ifnottrue (goto (doadd)) say(&CR&&CR&&15&%VAR%F &7&is already tagged.) ;has been found in your tagged files list.) goto (getr) ;lview(%pbtemp%tagged.%NODE%,10,7) ;say(&CR&&15&Do you still want to tag this file? (&12&Y&15&/&12&N&15&)&14&*) ;back(4) ;yesnoask() ;linefeed(1) ;if (%resp%)=(No) then goto(getr) ;goto (doAdd) *invfn Display(Display\INVALID) flushout selfarea(/:LASTDOWN/) Enter goto (getr) *notenuftime addvar(0%nv%totaltime%+-%var%v=q) setequal(/nvTotalTime=%var%q) Display(Display\NODLTIME) goto (getr) *notenuf Display (Display\fbadsec) selfarea(/:LASTDOWN/) goto (getr) *NotHere selfarea(/:lastdown/) Display(Display\notfnd) goto(getr) *ret *retn say ( |) eline(79) say ( |) setequal(y=%nv%yb%) setequal(f=%nv%fb%) setequal(/nvfb=) setequal(/nvyb=) defpause(%nv%defpause%) defpif(%nv%defpif%) setequal(/nvdefpif=) setequal(/nvdefpause=) return SACTL_setequal(g=1) display(display\search) menuask(%cron%&3&Please text to search for&12&: &15&*) setequal(h=0) setequal(y=20) if (%RESP%)=(<CR>) then Return find(%resp%,.) ifnottrue(combine(%resp%+.*=e)) ifnottrue(setequal(/resp=%var%e)) setequal(n=%RESP%) log(--,Wildcard Search for: %var%n) defpause($7$&0&[More?]$0$&3& (&11&S&3&)top, (&11&N&3&)onstop, (&11&V&3&)iew, (&11&D&3&)ownload, (&11&T&3&)ag, (&11&H&3&)elp or (&11&C&3&)ontinue?&12&: &7&) defPif(s:stop,n:nonstop,v:view2,h:fhlp,t:tag2,d:down2) clearscr say(&11&(Spacebar) Aborts. &14&Searching file database for "%var%n". . .&CR&) spause(3) goto (enew) *stsearch selfarea(%var%g) eline(79) enufsec(%FILSEC%) ifNotTrue (goto (skcheck)) *csearch say(&7&Searching file area: %FILNAME%|) if (%CD%)=(No) then search(%FILPATH%files.bbs,12,15,7,11,3,%var%n,1,1) if (%CD%)=(Yes) then search(%CDPath%%filarea%\files.bbs,12,15,7,11,3,%var%n,1,1) ifTrue (goto (enew)) ifkey( ) ifTrue (goto (enew)) ;did user hit stop? localkey(1) notif (%ARESP%)=(No) then goto (enew) *skcheck if (&g)=(%maxfarea%) then goto (enew) inc(g) goto (stsearch) *enew setequal(g=1) if (%var%h)=(%maxarea%) then goto (res) inc(h) selarea(%var%h) enufsec(%areasec%) ifnottrue(goto (enew)) listfile(areas\farea%var%h) notif (%farea%)=(AREAS\FAREA%var%h) then goto (enew) goto (stsearch) *res eline(79) selarea(/:lastmsg/) selfarea(/:LASTDOWN/) setequal(k=0) defpause($7$&0&[Send more text?]$0$&3& (&11&S&3&)top, (&11&N&3&)onstop or (&11&C&3&)ontinue?&12&: &7&) defPif(s:stop,n:nonstop) ;define our pause prompt... display(display\sdone) Return *view2 setequal(k=%ARESP%) loadsub(control\macros\zview.ctl) goto (blist2) *tag2 setequal(k=%ARESP%) loadsub(control\macros\tfiles.ctl) goto (blist2) *down2 setequal(k=%ARESP%) loadsub(control\macros\down.ctl) selfarea(/:Lastdown/) goto (blist2) *blist2 spause(0) clearscr goto (stsearch) *fhlp defpause($7$&0&[Send more text?]$0$&3& (&11&S&3&)top, (&11&N&3&)onstop or (&11&C&3&)ontinue?&12&: &7&) defPif(s:stop,n:nonstop) setequal(k=%ARESP%) display(display\help\lst,/:SEC/) goto (blist2) STATSCTLFlog (--,Viewing user statistics) if (%nv%wipmode%)=(1) then loadmem(control\macros\statswip.ctl) delimit( ,;) *stats1 SetEqual(/nva=%VAR%A) ; store contents of A for later restoration SetEqual(/nvb=%VAR%B) ; store contents of B for later restoration ;---PowerStak Block 1 len(%nv%queue%) notif (%aresp%) = (0) then setequal(/resp=%nv%queue%) goto(stk) ;If something in the stack then... endif ;---PowerStak Block 1 End--- *WhichOne flushout Say(&CR&&15&(&12&V&15&)iew User Profile or (&12&E&15&)dit Adjustable Settings? &14&*) MenuKey(%CRON%*) If(%RESP%)=(<CR>) then Return BigNiceSay(P:Profile,E:Edit Settings) BigIf(V:Profile,E:UserInfo) Goto(InvType) *Profile LoadSub(control\secinfo.ctl) Return ClearScr SetEqual(a= Your Constant Statistics:) SetLen(a=79) Say(&0&$7$%VAR%A$0$) *ContStats1 Say(&CR&&7& Date of Last Call: &14&/:LAST/ &11&│&7& Your Security Level Is: *) Say(&14&%SEC%&CR&&7& First call to BBS: &14&/:FIRST/ &11&│&7& Times on this *) Say(BBS: &14&/:TIMESON/&CR&&7&Last New Files Check: &14&/:LASTCHK/ &11&│&7& *) Say( Carrier Drops: &14&/:DROPPED/&CR&&7& Current BBS Time: &14&%DATE% %TIME% &11&│*) Say(&7& Time Allotted Per Day: &14&%LIMIT%&CR&) ;SetEqual(a= Your Adjustable Settings:) ;SetLen(a=79) ;Say(&0&$7$%VAR%A$0$) *InvType Say(&CR&&CR&&12&Invalid selection. Please try again...) Goto(WhichOne) *Again Clearscr *UserInfo ClearScr Say(&CR&&14&USER INFORMATION &7&─────────────────────────────────────────────────────────────>) *ContStats2 Say(&12&1. &11&Street Address: &7&*) SetEqual(a=/:STREET1/) SetLen(a=21) Say(%var%a &12&2. &11&Password: &7&*) SetEqual(a=/:PASS/) SetLen(a=20) Say(%VAR%A) say(&12&3. &11&City and State: &7&*) SetEqual(a=/:FROM/) SetLen(a=21) Say(%var%a &12&4. &11&MHS Gateway Name: &7&*) SetEqual(a=/:MHSNAME/) SetLen(a=12) Say(%var%a) SetEqual(a=/:PHONE/) SetLen(a=18) Say(&12&5. &11&Voice Phone Number: &7&%var%a*) SetEqual(a=/:WORK/) SetLen(a=12) say( &12&6. &11&Work Phone Number: &7&%var%a) ;23 spaces in right column Say(&12&7. &11&Company Name: &7&*) SetEqual(a=/:COMPANY/) If(%HANDLE%)=(Yes) then SetLen(a=24) Say(%VAR%A *) NotIf(%HANDLE%)=(Yes) then Goto(NoAlias) ;NotIf(%HANDLE%)=(Yes) then Say(&8&8. Alias: *) If(%HANDLE%)=(Yes) then Say(&12&8. &11&Alias: &7&*) If(%HANDLE%)=(Yes) then setequal(a=/:ALIAS/) NotIf(%HANDLE%)=(Yes) then SetEqual(a=not available) setlen(a=23) Say(%var%a *) *NoAlias Say() Say(&CR&&14&SYSTEM SETTINGS &7&──────────────────────────────────────────────────────────────>) Say(&12&9. &11&Graphics Mode: &7&*) SetEqual(a=%GRAPHICS%) SetLen(a=22) Say(%var%a &12&10. &11&ANSI Music: &7&/:ANSMUSIC/) Say(&12&11. &11&Default Protocol: &7&*) SetEqual(a=/:PROTOCOL/) If(/:PROTOCOL/)=(N) then SetEqual(a=None) SetLen(a=19) Say(%var%a &12&12. &11&Screen Length: &7&/:SCREENLEN/) SetEqual(a=/:FLAG1/) SetLen(a=6) Say(&12&13. &11&Bypass Attached File: &7&%VAR%A*) Get(/:DEFAVAIL/,1,1) If(%ARESP%)=(Y) then SetEqual(a=Yes) NotIf(%ARESP%)=(Y) then SetEqual(a=No) ;SetEqual(a=/:DEFAVAIL/) SetLen(a=3) Say(&12& 14. &11&Available For Chat: &7&%VAR%A) SetEqual(a=/:FLAG2/) SetLen(a=3) Say(&12&15. &11&Use Full-Screen Editor by Default: &7&%VAR%A) Say(&CR&&14&OFFLINE MAIL SETTINGS &7&────────────────────────────────────────────────────────>) SetEqual(a=/:FLAG3/) SetLen(a=3) Say(&12&16. &11&Personal Mail Only: &7&%VAR%A*) SetEqual(a=/:FLAG4/) SetLen(a=3) Say(&12& 17. &11&Skip New Files Scan: &7&%VAR%A) Say(&10&&CR&Selections are listed above (1-17).) cAsk (%cron%&15&Which selection would you like to change (ENTER=Quit)?&12&: &14&*) ;---PowerStak Block 2 *stk setequal(a=%resp%) DEQUEUE(a) setequal(/nvqueue=%var%a) setequal(/resp=%aresp%) ;---PowerStak Block 2 End--- Get(%RESP%,1,1) If(%ARESP%)=(/) then Goto(Anywhere) If(%ARESP%)=(?) then Goto(OlHelp) Say(&3&) MenuEqual(/RESP=%RESP%) BigIf (<CR>:return,Q:Return,1:street,2:pass,3:city,4:MHS,5:Phone,6:work,7:coname,8:alias,9:graph,10:music,11:prot,12:scrlen,13:attask,14:defavail,15:fulledit,16:qwkpersonal,17:qwknewscan) goto(bsel) *Return SetEqual(a=%NV%A) ; restore A to its original value SetEqual(b=%NV%B) ; restore B to its original value SetEqual(/nva=) ; kill %nv%a% variable SetEqual(/nvb=) ; kill %nv%b% variable return *Alias If(%HANDLE%)=(Yes) then loadsub(control\macros\alias.ctl) NotIf(%HANDLE%)=(Yes) then Say(&12&The option you have selected is currently not available) SecPause(2) endif Goto (UserInfo) *fulledit loadsub(control\macros\editdef.ctl) Goto (UserInfo) *QwkPersonal loadsub(control\macros\qwkpers.ctl) Goto(UserInfo) *QwkNewScan loadsub(control\macros\qwkscan.ctl) Goto(UserInfo) *Coname loadsub(control\macros\coname.ctl) Goto (UserInfo) *MHS loadsub(control\macros\chgmhs.ctl) Goto (UserInfo) *Music loadsub(control\macros\pickmuse.ctl) Goto (UserInfo) *prot loadsub(control\macros\defprot.ctl) Goto (UserInfo) *scrlen loadsub(control\macros\scrlen.ctl) Goto (UserInfo) *street loadsub(control\macros\street.ctl) Goto (UserInfo) *city loadsub(control\macros\city.ctl) Goto (UserInfo) *pass loadsub(control\macros\pass.ctl) Goto (UserInfo) *phone loadsub(control\macros\hphone.ctl) Goto (UserInfo) *graph loadsub(control\macros\graph.ctl) Goto (UserInfo) *work loadsub(control\macros\work.ctl) Goto (UserInfo) *attask loadsub(control\macros\attask.ctl) Goto (UserInfo) *defavail loadsub(control\macros\avail.ctl) Goto (UserInfo) *Bsel LoadSub(control\macros\badsel.ctl) ;Clear Stack on Error! ;---PowerStak Block 3 setequal(/nvqueue=) ;---PowerStak Block 3 End Goto (UserInfo) *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=101) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(Again) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Goto(again) HICTL∙setequal(^51=c:\fd\fdo.bat) setequal(^50=fdo.bat) setequal(d=^:50^) *PICKP Display (Display\DN-PROTS) MenuAsk (%MIN%1%&3&Which transfer protocol would you like to use?&11&(or Q to Quit)&12&: &15&*) Find(%RESP%,\) ;make sure they didnt stick a backslash in there NotIf (%ARESP%)=(0) Then return if (%resp%)=(Q) then return SetEqual(b=%RESP%) Seek(protocol\%var%b-VD.BT) ;check to see If protocol exists.. IfNotTrue(Goto (pickp)) Len(%var%b) NotIf (%ARESP%)=(1) then goto (nobat) Say(&CR&&3& Would you like to download this file? &9&[ ]&14&*) Back(4) YesNoAsk(*) If (%RESP%)=(No) Then return say(&3&Would you like us to log you off afterwards? &9&[ ]&14&*) back(4) yesnoask(*) SetEqual(m=%RESP%) fcopy(^:51^,zvtemp\^:50^) Say(&CR&&11&We're sending "^:50^". Please get ready to receive it now.) If (%LOCAL%)=(TRUE) Then return FixFile(protocol\%var%b-vd.bt,protocol\%var%b-vd.bat) InitClock Exec(protocol\%var%b-vd.BAT│) Kill(protocol\%var%b-vd.bat) If (%LOCAL%)=(FALSE) Then toglocal NotIf (%ARESP%)=(0) Then Goto (nsc) XferTime SetEqual(e=%ARESP%) Size(zvtemp\%var%d) MultVar(%XMIN%*60=o) DivVar(%ARESP%/%var%o=g) ;calculate CPS rate CnvtK(%ARESP%) AddVar(%ARESP%+/:KDOWN/=o) SetEqual(/KDOWN=%var%o) Say(%BEEP%*) Log(--,%var%d Downloaded from %var%e.) Log(--,Rate: %var%g CPS) AppendTo(logs\DOWNLOAD.%NODE%,%var%d downloaded by %NAME% at %TIME% on %DATE%.) SetEqual(a=/:DOWNLOADS/) inc(a) SetEqual(/DOWNLOADS=%var%a) If (%LOCAL%)=(TRUE) Then toglocal Display (Display\SUCCESS) if (&m)=(Yes) then loadsub(control\autooff.ctl) Enter return *NOBAT Say(&CR&&15&No batch protocols allowed for transfering this file.&CR&) Goto (pickp) *nsc toglocal return NOSPACECTL=if (%nv%wipmode%)=(1) then goto (wipno) say(&CR&&14&There is not enough disk space left. Please try writing your message) say(at a later time. Thank you.&CR&) enter return *wipno setequal(c=13~There is not enough disk space left. Please try writing your message at a later time.~Insufficient Space~1~) jump (okbox) return *okbox Jump (wipc) comlineinput(30,l) if (%resp%)=() then goto (okbox) ret *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(45) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) RET *NOC0 log(<<,Carrier lost.) quitbbs UPCTL« loadsub(control\exitwip.ctl) if (%graphics%)=(RIP) then clearscr if (%event%)=(TRUE) then loadmem(control\macros\event.ctl) setequal(s=%Farea%) display (display\UPLD) kill(%pbtemp%ubatch.%NODE%) enter clearmem freespace(%CDRIVE%:) setequal(i=%ARESP%) cmpval(%ARESP%,%MINSPACE%) ifTrue (goto (notenufs)) if (%LOCAL%)=(TRUE) then goto (pok) *pickprot display (display\up-PROTS) menuask (&3&Which transfer protocol would you like to use?&11&(or ENTER to Quit)&12&: &15&*) find(%RESP%,\) notif (%ARESP%)=(0) then goto (badprot) if (%resp%)=() then goto (filesback) BigIf(h:phelp,q:filesback) seek(protocol\%RESP%-U.BT) ifTrue (goto (Pok)) *badprot loadsub(control\macros\badsel.ctl) goto (pickprot) *Pok setequal(b=%RESP%) setnv(protocol=%var%b) addcomma(%var%i) say(&CR&&14&%aresp% &7&Bytes Free.) len(%var%b) notif (%LOCAL%)=(TRUE) then notif (%ARESP%)=(1) then loadmem(control\macros\ubatch.ctl) *gtname say(&CR&&3&Please enter the name of the file to upload&12&: &14&( )&15&*) back(13) menuask(%NOCR%%CRON%%LEN%12%*) if (%RESP%)=(<CR>) then say() if (%RESP%)=(<CR>) then goto (ret0) len(%Resp%) back(%Aresp%) adddef(.%DEFEXT%) say(%Resp%&11&&CR&) setequal(d=%RESP%) iseek(%var%d) if (%aresp%)=(Yes) then goto (ishere) if (%Aresp%)=(INVALID) then goto (invfn) say(&14&Please enter a description for your file. &10&The description can take up 3 lines.&15&) resetwrap say( (----2----3----4----5----6----7---8----)) setequal(r=1) wrapask (%MIN%1%%LEN%40%&3&1&12&: &15&*) setequal(^1=%RESP%) setequal(r=2) wrapask (%CRON%%LEN%40%&3&2&12&: &15&*) if (%RESP%)=(<CR>) then goto (askup) setequal(^2=%RESP%) setequal(r=3) ask (%LEN%39%%CRON%&3&3&12&: &15&*) if (%RESP%)=(<CR>) then goto (askup) setequal(^3=%RESP%) *askup jump(garea) say(&CR&&15& Would you like to upload this file? (&12&Y&15&/&12&N&15&)&14&*) back(4) yesnoask(*) if (%RESP%)=(No) then goto (ex) say(&15&Would you like us to log you off afterwards? (&12&Y&15&/&12&N&15&)&14&*) back(4) yesnoask(*) setequal(m=%RESP%) if (%LOCAL%)=(TRUE) then goto (local) setactivity(Uploading a File) say(&CR&&11&We're ready to receive the file. Please start sending it now.) fixfile(protocol\%var%b-u.bt,%pbtemp%%var%b-u.bat) initclock exec(%pbtemp%%var%b-u.BAT│) *success tfreeze(-1) eline(20) notif (%ARESP%)=(0) then goto (aborted) setequal(k=0) *lsuccess xfertime setequal(e=%ARESP%) setnv(zc2path=%var%p) setnv(zc2file=%var%d) loadsub(zc2\zc2.ctl) if (&a)=(2) then goto (aborted) notif (%LOCAL%)=(TRUE) then toglocal setequal(b=%XMIN%) if (&b)=(0) then setequal(b=1) setequal(o=%xtime%) size(%var%p%var%d) divvar(%ARESP%/%var%o=g) log(--,%var%d Uploaded. Took %XMIN% minutes.) log(--, Protocol: '%nv%protocol%'.) log(--,Rate: %var%g CPS) cnvtk(%ARESP%) addvar(%ARESP%+/:KUP/=o) setequal(/KUP=%var%o) say(%BEEP%*) refund ;refund some of the users time... upped ;set last upload time... appendto(logs\UPLOAD.%NODE%,%var%d uploaded at %TIME% on %DATE% by %NAME%.) setequal(a=/:UPLOADS/) inc(a) setequal(/UPLOADS=%var%a) setequal(a=/:dailyul/) inc(a) setequal(/dailyul=%var%a) file2(%var%p,%var%d,10) ;index(/:lastup/,%var%d,%farea%.ndx) ;getdequiv(/:lastup/) ;index(%aresp%,%var%d,areas\farea/:lastmsg/.ndx) notif (%BAUD%)=(LOCAL) then toglocal seek(xcheck.bt) if (%ARESP%)=(Yes) then goto (testup) display (display\USUCCESS) if (&m)=(Yes) then goto (autooff) *ex listfile(%var%s) selfarea(/:lastdown/) resetlist tfreeze(0) goto (ret0) *aborted kill(%var%p%var%d) log(--,Upload of %var%d aborted.) display (display\ABORTED) goto (ex) *ishere display(display\ISHERE) enter goto (gtname) *testup fixfile(xcheck.bt,xcheck.bat) exec(xcheck.bat) display (display\USUCCESS) goto (ex) *autooff loadmem(control\autooff.ctl) *local say(&CR&&7&Note: To add a large amount of files to your BBS, use the FileEdit program) say(to copy files into the desired directories and import descriptions using the) say(Alt-I function.) say(&CR&&10&You will now specify the path where the file resides. Ex: C:\DOWNLOADS\) menuask(&15&Please enter the path&12&: &14&*) setequal(k=10) initclock Len(%RESP%) AddVar(%ARESP%+-1=o) Get(%RESP%,%ARESP%,1) If(%ARESP%)=(\) then Get(%RESP%,1,%VAR%O) SetEqual(/RESP=%ARESP%) ; strip trailing backslash, if any endif fcopy (%RESP%\%var%d,%var%p%var%d) notif (%ARESP%)=(0) then goto (err) goto (lsuccess) *err say(&11&&CR&File not found!&CR&) enter goto (ex) *invfn display(display\INVALID) flushout selfarea(/:LASTDOWN/) enter tfreeze(0) goto (ret0) *notenufs display (display\NOSPACE) selfarea(/:LASTDOWN/) enter tfreeze(0) goto (ret0) *phelp display(display\help\prot,/:SEC/) goto (pickprot) *filesback tfreeze(0) goto (ret0) *garea setequal(p=files\uploads\) LoadSub(control\macros\changeu.ctl) SetEqual(p=%FILPATH%) ret *ret0 setnv(protocol=) if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return BOXSCANCTL;BOXSCAN PROCEDURE ZAP (LCONF.%NODE%,/:LASTMSG/) CLEARMEM SETEQUAL (H=0) SAY (&CR& &10&Checking your Mail Box:&CR&) *STSCAN INC (H) SELAREA (%VAR%H) ENUFSEC (%AREASEC%) IFNOTTRUE (GOTO (ELOOP)) MSGHIGH(%VAR%H) SETEQUAL(Z=%ARESP%) SETEQUAL(M=MAILBOX\░%SEC%.%VAR%H) JUMP (SCAN) SETEQUAL(M=MAILBOX\%USERN%.%VAR%H) SETEQUAL(Z=0) JUMP (SCAN) IF (&A)=(10) THEN KILL (MAILBOX\%USERN%.%VAR%H) *ELOOP NOTIF (%VAR%H)=(%MAXAREA%) THEN GOTO (STSCAN) INPLINE (LCONF.%NODE%,1) SETEQUAL(/LASTMSG=%ARESP%) SELAREA(/:LASTMSG/) SETEQUAL(/WAIT=N) LOADMEM (CONTROL\BULLETS.CTL) *DDSP HIMSG(/:LASTMSG/) SETEQUAL(F=%ARESP%) SAY (^:1^*) LOWMSG(/:LASTMSG/) SETEQUAL(N=%ARESP%) DO IF (^:U^)=() THEN RET SAY (, ^:U^*) INC (U) LOOP *SCAN SEEK (%VAR%M) IFNOTTRUE (RET) IF (%VAR%Z)=(0) THEN GOTO (DI1) INC(Z) INPOPEN (%VAR%M) ZAP(MSLST.%NODE%) DO enter INPREAD SETEQUAL(L=%ARESP%) CMPVAL(%VAR%Z,%VAR%L) IFTRUE(APPENDTO(MSLST.%NODE%,%VAR%L)) EOFLOOP INPCLOSE LINES(MSLST.%NODE%) IF (%ARESP%)=(0) THEN RET ARRAYREAD (MSLST.%NODE%) GOTO (DI2) *DI1 ARRAYREAD (%VAR%M) *DI2 SETEQUAL(/LASTMSG=%VAR%H) SETEQUAL(U=2) SAY (&2&%AREANAME% Conference: &14&*) JUMP (DDSP) SETEQUAL(U=1) SAY(&CR&&CR&&3& Would you like to read these messages? &9&[ ]&15&*) SETEQUAL(/nvMsgReadType=10) BACK(4) SETEQUAL(/nvCurMsg=^:1^) YESNOASK(*) SETEQUAL(a=0) IF (%RESP%)=(No) THEN RET ZAP(HI.%NODE%,%VAR%H) LOADSUB (CONTROL\READ.CTL,GOTO(REPEAT)) INPLINE(HI.%NODE%,1) SETEQUAL(H=%ARESP%) CLEARMEM SETEQUAL(A=10) RET GRAPHDCTL∩ setequal(/graphics=ANSI) if (%LOCAL%)=(TRUE) then return flushout secpause(1) flushout secpause(1) comsend(!tn) say( |) Say( ) Say(Checking graphics protocol . . . *) setequal(a=) secpause(1) comkey notif(%ARESP%)=() then goto (tkys) secpause(1) comkey *tkys if(%ARESP%)=(D) then goto (isWIP) if(%ARESP%)=(C) then goto (isWIP) if(%ARESP%)=(-) then goto(isWIP) if(%ARESP%)=(I) then goto (isrip) if(%ARESP%)=() then setequal(a=aps) if(%ARESP%)=() then goto (isnone) comkey goto (tkys) *isansi Say(&12&ANSI &15&Graphics Detected) setequal(/graphics=ANSI) return *isWIP flushout say(&12&Windows Interface Protocol Detected) setequal(/graphics=WIP) return *isrip flushout Say(&12&RIP&14&scrip &15&Graphics Detected) setequal(/graphics=RIPscrip) return *isnone flushout if (%VAR%A)=(aps) then goto (isansi) Say(No Graphics Detected) Say(&7&Use &12&(&14&A&12&)&7&NSI Graphics or ASCI&12&(&14&I&12&)&7& Graphics? &14&*) MenuKeyP If(%RESP%)=(A) then SetEqual(/graphics=ANSI) If(%RESP%)=(R) then SetEqual(/graphics=RIP) If(%RESP%)=(W) then SetEqual(/graphics=WIP) Notif(%RESP%)=(A) then NotIf(%RESP%)=(R) then NotiF(%RESP%)=(W) then Setequal(/graphics=ASCII) return EDLISTCTL╡loadsub(control\macros\ltagged.ctl) say(&15&Please enter the name of the file to remove&12&: &15&( )&14&*) back(13) menuask(%NOCR%%CRON%%LEN%12%*) if (%RESP%)=(<CR>) then goto (rn) adddef (.%DEFEXT%) setequal(a=%Resp%) jump (DoCopy) setequal(b=0) setequal(c=0) inpopen(t1.%node%) do inc(c) inpread if (%ARESP%)=(%VAR%A) then setequal(b=%VAR%C) notif (%ARESP%)=(%VAR%A) then appendto(tagged.%node%,%ARESP%) eofloop inpclose if (%VAR%B)=(0) then goto (NoFRet) inpopen (t2.%node%) setequal(c=0) do inc(c) inpread notif (%VAR%C)=(%VAR%B) then appendto (tagged2.%node%,%ARESP%) eofloop inpclose inpopen (f1.%node%) setequal(c=0) do inc(c) inpread notif (%VAR%C)=(%VAR%B) then appendto (free.%node%,%ARESP%) eofloop inpclose say(&CR&&11&%VAR%A &2&has been removed from the list.&CR&) enter *rn say() return *NoFRet fcopy (t2.%node%,tagged2.%node%) fcopy (f1.%node%,free.%node%) say (&CR&&12&File not found in tagged file list.&CR&) enter return *DoCopy fcopy(tagged.%node%,t1.%node%) fcopy(tagged2.%node%,t2.%node%) fcopy(free.%node%,f1.%node%) zap(tagged.%node%) zap(tagged2.%node%) zap(free.%node%) say() ret DELTAGCTL÷;deltag.ctl - for editing/deleting the list of tagged files. ; if (%nv%wipmode%)=(1) then loadmem(control\macros\wipedtag.ctl) if (%graphics%)=(RIP) then clearscr *start seek(%pbtemp%tagged2.%node%) ifnottrue(goto (notag)) loadsub(control\macros\taglist.ctl) *Prompt say(&11&[Download queue (tag list) management menu]) menuask(&3&Number to remove, Delete (&11&E&3&)ntire list, (&11&A&3&)dd file, or &11&(ENTER) &3&to quit&12&: &15&*) if (%resp%)=(0) then return if (%resp%)=() then return if (%resp%)=(A) then goto(doAdd) If (%RESP%)=(E) Then goto (doKill) setequal(d=%resp%) inpopen(%pbtemp%tagged.%node%) ;open for input zap(%pbtemp%tagged0.%node%) ;create a new file setequal(a=0) addvar(%var%d+0=d) do inc(a) inpread ;read a line from the file if (%var%a)<>(%var%d) then appendto(%pbtemp%tagged0.%node%,%aresp%) eofloop inpclose fcopy(%pbtemp%tagged0.%node%,%pbtemp%tagged.%node%) if (%var%a)=(1) then goto (dokill) inpopen(%pbtemp%tagged2.%node%) zap(%pbtemp%tagged0.%node%) setequal(a=0) do inc(a) inpread notif (%var%a)=(%var%d) then appendto(%pbtemp%tagged0.%node%,%aresp%) notif (%var%a)=(%var%d) then goto (el) size(%aresp%) ttime(%aresp%) ;addvar(%nv%tsize%+-%ttim%=c) ;setequal(/nvtsize=%var%c) addvar(%nv%totaltime%+%ttim%=c) setequal(/nvTotaltime=%var%c) *el eofloop inpclose fcopy(%pbtemp%tagged0.%node%,%pbtemp%tagged2.%node%) inpopen(%pbtemp%free.%node%) zap(%pbtemp%tagged0.%node%) setequal(a=0) do inc(a) inpread notif (%var%a)=(%var%d) then appendto(%pbtemp%tagged0.%node%,%aresp%) eofloop ;loop until end of file inpclose fcopy(%pbtemp%tagged0.%node%,%pbtemp%free.%node%) kill(%pbtemp%tagged0.%node%) goto (start) Return *notag say(&CR&&12&You don't have any tagged files!&CR&) goto(prompt) *doKill ;setequal(/nvtsize=0) setequal(/nvtotaltime=0) Kill(%pbtemp%tagged.%NODE%,%pbtemp%tagged2.%NODE%,%pbtemp%free.%NODE%,%pbtemp%tsize.%node%) return *doAdd setnv(indel=1) loadsub(control\macros\tfiles.ctl) setnv(indel=) goto(start) SALL2CTLflowmsg(/:lastmsg/) getmail(%aresp%,/:lastmsg/,1) setequal(/nvMsgReadDir=1) zap(sall.tmp,/:lastmsg/) zap(cb,0) log(--,New Msg Scan (by last read)) inpline(cb,1) say() *ttp1 addvar(%aresp%+1=a) setequal(/lastmsg=%var%a) zap(cb,%var%a) selarea(%var%a) himsg(/:LASTMSG/) setequal(f=%ARESP%) lowmsg(/:lastmsg/) setequal(n=%ARESP%) setequal(/resp=1) ifkey( ) iftrue(goto (es)) localkey(2) if (%aresp%)=(32) then goto (es) enufsec(%areasec%) ifnottrue(goto (nextbase)) say(&11&Searching Area /:lastmsg/: &2&%areaname%|) msghigh(/:LASTMSG/) SETEQUAL(y=%ARESP%) inc(Y) cmpval(%VAR%F,%VAR%Y) iftrue (goto (nextbase)) cmpval(%VAR%N,%VAR%Y) ifnottrue(SETEQUAL(Y=%VAR%N)) setequal(/nvCurMsg=%var%y) setequal(/nvMsgReadDir=1) setequal(s=0) loadsub(control\READ.CTL,goto (repeat)) if (%RESP%)=(Q) then Jump (qt) *nextbase eline(50) inpline(cb,1) if (%aresp%)=(%maxarea%) then goto (es) goto (ttp1) *es inpline(sall.tmp,1) setequal(/lastmsg=%aresp%) selarea(%aresp%) return *qt say(&3&Quit Scan?&12&: &9&[ ]&15&*) back(4) yesnoask(*) say() if (%RESP%)=(Yes) then return ret NVS +setnv(curactive=) setnv(logchat=) setnv(syscb=0) setnv(usrcb=0) setnv(SpLine=%aresp%) setnv(sysx=%x%) setnv(sysy=%y%) setnv(usrx=1) setnv(usry=13) setnv(sysline=) setnv(usrline=) setnv(curx=%x%) setnv(cury=%y%) setnv(curactive=u) if (%y%)>(11) then setnv(Syscb=1) setnv(Usrcb=1) MWHOCTLif (%nv%wipmode%)=(1) then loadmem(control\macros\mwhowip.ctl) if (%MULTI%)=(TRUE) then goto (start) say(&CR&&11&Sorry, %FNAME%, this system is not running the Multinode version of the) say(Powerboard BBS Package.&CR&&CR&&3&If you feel this would be a good addition to the BBS, please contact) say(your Sysop, %SYSOP%.) goto (ewho) *start Seek(%CPAT%whoison.dat) If (%ARESP%)=(No) Then return if (%Graphics%)=(RIP) then clearscr linefeed(1) setequal(w=0) size(%CPAT%whoison.dat) display(display\who) divvar(%ARESP%/131=y) do inc(w) nodestat(%var%w) setequal(t=%var%w) setlen(t=4) say(&0&&11&%var%t&15& %NAVAIL%&7& %NNAME% %NFROM% %NBAUD%%hRed%%NACTIVITY%) If (&w)=(&y) then goto (ewho) loop *ewho linefeed(1) log(--,Viewed other node users (WHO)) Enter Return VIEWNODECTL±loadsub(control\exitwip.ctl) if (%MULTI%)=(TRUE) then goto (start) say(&CR&&11&Sorry, %FNAME%, this system is not running the Multinode version of the) say(Powerboard BBS Package.&CR&&CR&&3&If you feel this would be a good addition to the BBS, please contact) say(your Sysop, %SYSOP%.&CR&) enter goto (doret) *start loadsub(control\macros\mwho.ctl) menuask(%CRON%&CR&&3&Enter number of the &11&node &3&to view (ENTER=Quit)&12&: &15&*) if (%resp%)=(<CR>) then goto (doret) getscreen(%resp%) say(&CR&&14&Please wait while screen is being retrieved... this process may take a) say(while. Please wait at the following prompt until the screen arrives.&CR&) enter *doret if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return WFINDCTL0goto (show) setequal(d=*.E*) setequal(%MAXFAREA%+1=e) setequal(c=0) setequal(f=0) *tt inc(c) if (&E)=(&C) then goto (te) selfarea(%VAR%C) say(%FILPATH% |) zap(tmp00.%NODE%) inpclose loadexec(command.com,/c if exist %FILPATH%%VAR%D dir/b %FILPATH%%VAR%D >tmp00.%NODE%,) return inpopen(tmp00.%NODE%) do fendif(tt) inpread inc(f) setequal(^%VAR%F=%ARESP%) loop goto (tt) *te say(write to file done...) selfarea(/:lastdown/) enter *show setequal(d=0) do if (&D)=(&F) then return inc(D) say(^:D^) loop return SAVEVARSCTLxsetequal(/nva0=%var%a) setequal(/nvb0=%var%b) setequal(/nvc0=%var%c) setequal(/nvd0=%var%d) setequal(/nve0=%var%e) setequal(/nvf0=%var%f) setequal(/nvg0=%var%g) setequal(/nvh0=%var%h) setequal(/nvi0=%var%i) setequal(/nvj0=%var%j) setequal(/nvk0=%var%k) setequal(/nvl0=%var%l) setequal(/nvm0=%var%m) setequal(/nvn0=%var%n) setequal(/nvo0=%var%o) setequal(/nvp0=%var%p) setequal(/nvq0=%var%q) setequal(/nvr0=%var%r) setequal(/nvs0=%var%s) setequal(/nvt0=%var%t) setequal(/nvu0=%var%u) setequal(/nvv0=%var%v) setequal(/nvw0=%var%w) setequal(/nvx0=%var%x) setequal(/nvy0=%var%y) setequal(/nvz0=%var%z) return WIPEDTAGCTLi*thetop setnv(high=21) setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=edittag)) *initBox setequal(c=14~listbox~1000~%nv%high%~) jump (wipc) goto (listfa) *GetResp0 setequal(c=0A~) jump (wipc) jump (getInput) writeln(Response from user: "%resp%") if (%nv%wiprestreq%)=(1) then goto (thetop) if (%resp%)=(E) then goto (dokill) if (%resp%)=(A) then goto (doadd) if (%resp%)=(Exit) then goto (ret4) if (%resp%)=(quit) then goto (ret4) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) if (%var%b)=(-1) then goto (more) setequal(/resp=%var%b) goto (sa) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif ;if (%nv%wipc%)=(searchtext) then setNv(key=%nv%Ctext%) *NoCmnd setnv(wtxt=) goto (getResp0) *listfa seek(%pbtemp%tagged.%node%) ifnottrue(goto(donef)) inpopen(%pbtemp%tagged.%node%,4) setnv(d=0) setnv(m=0) setnv(e=0) setnv(f=0) *more setequal(u=0) setequal(d=%nv%d%) setequal(m=%nv%m%) setequal(e=%nv%e%) setequal(f=%nv%f%) fendif(donef) *stLoop inc(u) inc(d) inpread writeln(%aresp%) setequal(w=%aresp%) setequal(c=07~listbox~) cmpval(9,%var%d) ifnottrue(setequal(c=%var%c0)) setequal(c=%var%c%var%d: %var%w) len(%var%w) addvar(12+-%aresp%=a) get( ,1,%var%a) setequal(c=%var%c%aresp%) inpline(%pbtemp%tagged2.%node%,%var%d) setequal(w=%aresp%) size(%var%w) addvar(%var%e+%aresp%=e) setnv(siz=%aresp%) setequal(c=%var%c %aresp%) len(%aresp%) addvar(7+-%aresp%=a) get( ,1,%var%a) setequal(c=%var%c%aresp% ) ttime(%nv%siz%) setequal(c=%var%c%aresp%) setequal(c=%var%c~) setnv(d=%var%d) setnv(f=%var%f) writeln(%var%c) jump (wipc) setequal(d=%nv%f%) setequal(d=%nv%d%) inpLine(%pbtemp%free.%node%,%var%d) addvar(%var%f+%ttim%=f) ifnottrue(addvar(%var%m+%ttim%=m)) if (%var%u)>(%nv%high%) then goto (donef) fendif(done) goto(stloop) *done inpclose cnvtk(%var%e) setequal(c=07~listbox~ TOTAL %aresp% kbytes %var%f minutes~) jump (wipc) goto (donef) *none setequal(c=07~listbox~ No files currently tagged.~) jump (wipc) goto (donef) *listfa inpclose inpopen(%farea%.bbs,4) setequal(d=0) setnv(d=0) *more setequal(d=%nv%d%) setequal(u=0) *rt inc(d) ;fendif(nomore) inpread setequal(n=%aresp%) fendif(nomore) inpread setequal(a=%aresp%) find(&a,,) if (%aresp%)=(0) then goto (rt) addvar(%aresp%+-1=w) get(&a,1,%var%w) if (%aresp%)>(%sec%) then goto (rt) setequal(e=%var%d) setlen(e=5) inc(u) setequal(c=07~listbox~%var%e %var%n~) writeln(%var%e %var%n) if (%nv%high%)<>() then goto (nh) if (%var%u)=(%resp%) then goto (ga0) *nh setnv(d=%var%d) if (%nv%high%)<>() then jump (wipc) setequal(d=%nv%d%) if (%nv%high%)=() then goto (rt) if (%var%u)>(%nv%high%) then goto (donef) goto (rt) *NoMore if (%nv%high%)=() then goto (ga0) ; writeln(No more matches to the text you specified could be found.) ; setequal(c=13~No more matches to the text you specified could be found.~End of List~1~) ; jump (okbox0) goto (donef) ; goto (getresp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(200) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *wipask loadsub(control\wipask.ctl) ret *getinput writeln(Waiting for input from remote user.) setequal(y=180) jump (wipask) if (%aresp%)<>(24) then ret loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) jump (wipask) if (%aresp%)=(24) then loadmem(control\timeout.ctl) ret *donef ;inc(d) setnv(d=%var%d) setnv(m=%var%m) setnv(e=%var%e) setnv(f=%var%f) write(Updating list box on user's screen ... ) setequal(c=07~listbox~-1~) jump (wipc) setequal(c=0F~listbox~Change File Area~1~1~2~) jump (wipc) setequal(c=0F~RecCount~20~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) setequal(c=0A~) jump (wipc) writeln(Done!) goto(getresp0) *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *notext writeln(No text was specified. Enter some text to search for and try again...) setequal(c=13~No text was specified. Please enter some text to search for and try again or click "quit" to exit.~No Text Specified~1~) jump (okbox0) goto (getresp0) *sa setequal(d=%resp%) inpopen(%pbtemp%tagged.%node%) ;open for input zap(%pbtemp%tagged0.%node%) ;create a new file setequal(a=0) addvar(%var%d+0=d) do inc(a) inpread ;read a line from the file if (%var%a)<>(%var%d) then appendto(%pbtemp%tagged0.%node%,%aresp%) eofloop inpclose fcopy(%pbtemp%tagged0.%node%,%pbtemp%tagged.%node%) if (%var%a)=(1) then goto (dokill) inpopen(%pbtemp%tagged2.%node%) zap(%pbtemp%tagged0.%node%) setequal(a=0) do inc(a) inpread notif (%var%a)=(%var%d) then appendto(%pbtemp%tagged0.%node%,%aresp%) notif (%var%a)=(%var%d) then goto (el) size(%aresp%) ttime(%aresp%) ;addvar(%nv%tsize%+-%ttim%=c) ;setequal(/nvtsize=%var%c) addvar(%nv%totaltime%+%ttim%=c) setequal(/nvTotaltime=%var%c) *el eofloop inpclose fcopy(%pbtemp%tagged0.%node%,%pbtemp%tagged2.%node%) inpopen(%pbtemp%free.%node%) zap(%pbtemp%tagged0.%node%) setequal(a=0) do inc(a) inpread notif (%var%a)=(%var%d) then appendto(%pbtemp%tagged0.%node%,%aresp%) eofloop ;loop until end of file inpclose fcopy(%pbtemp%tagged0.%node%,%pbtemp%free.%node%) kill(%pbtemp%tagged0.%node%) goto (initbox) Return *notag writeln(You don't have any tagged files!) setequal(c=13~You don't have any tagged files!~No tagged files.~1~) jump (okbox0) goto (getresp0) *doKill ;setequal(/nvtsize=0) setequal(/nvtotaltime=0) Kill(%pbtemp%tagged2.%NODE%,%pbtemp%tagged.%NODE%,%pbtemp%free.%NODE%,%pbtemp%tsize.%node%) writeln(Tagged File List Deleted.) setequal(c=13~Tagged File List Deleted.~List Deleted~1~) jump (okbox0) goto (initbox) *doAdd loadsub(control\macros\tag-wip.ctl) goto(thetop) *okbox0 Jump (wipc) *tryr0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (tryr0) ret *ret4 setnv(d=) inpclose return EDITCTLτsetequal(a=%NAME%) upcase(a) setequal(i=%MSGFROM%) upcase(i) If(%SEC%)=(100) then Goto(StartIt) notif (&i)=(&a) then goto (inv2) *StartIt setequal(p=%MAXLINE%) setequal(q=%var%y) msgkill(/:LASTMSG/,%var%y) setequal(a=%MSGTO%) SetEqual(/nvaddressee=%MSGTO%) SetEqual(/nvaddresser=%NAME%) SetEqual(/nvccs=0) SetEqual(/nvcc1=) setequal(k=20) seekuser(%var%a) setequal(c=%NDNUMB%) SetEqual(/nvtousernum=%NDNUMB%) setequal(y=0) IfNotTrue (setequal(c=0)) setequal(b=%MSGDESC%) SetEqual(/nvsubject=%MSGDESC%) ;setequal(z=10) SetEqual(z=0) ;At STENTER in ENTER.CTL, z is # of cc's. loadmem(control\macros\ENTER.CTL,goto (stenter)) *inv2 say(&CR&&12&Invalid selection! Please try again...) secpause(1) flushout return EDDCTL╠ask(file:) Seekfall(%RESP%) say(%aresp%) setequal(a=%resp%) If (%ARESP%)=(INVALID) Then goto (nope) If (%ARESP%)=(No) Then Goto (ope) If (%ARESP%)=(NOT ENOUGH) Then Goto (nope) selfarea(%ARESP%) ask() setequal(^1=%resp%) ask() setequal(^2=%resp%) ask() setequal(^3=%resp%) if (%CD%)=(No) then eddesc(%FILPATH%files.bbs,%var%a,3) if (%CD%)=(Yes) then eddesc (%CDPath%%filarea%\files.bbs,%var%a,3) selfarea(/:lastdown/) return *nope MCOPYCTLloadsub(control\exitwip.ctl) *CopyPrompt cAsk(%CRON%&CR&&15&Enter message number to copy (ENTER=Quit)&12&: &14&*) If(%RESP%)=(<CR>) then goto (doret) Get(%RESP%,1,1) If(%ARESP%)=(/) then Goto(Anywhere) If(%ARESP%)=(?) then Goto(Olhelp) MenuEqual(/RESP=%RESP%) inittxt GetMail(%RESP%,/:LASTMSG/,1) cMenuAsk(%CRON%&CR&&15&Copy to which area?&12&: &14&*) If(%RESP%)=(<CR>) then goto (doret) If (%MSGPVT%)=(PRIVATE) Then SetEqual(k=Yes) If (%MSGPVT%)<>(PRIVATE) Then SetEqual(k=No) setequal(a=%msgfrom%) fcomma(a) setequal(b=%msgto%) fcomma(b) setequal(c=%msgdesc%) fcomma(c) selarea(%resp%) WriteMsg(%RESP%,%var%b,%var%a,%var%c,00,%var%k,0,%MSGNET%,%MSGATTNAME%) selarea(/:lastmsg/) goto (doret) *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=81) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(CopyPrompt) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Goto(CopyPrompt) *doret if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return BUMPCTL%*BumpOthers setnv(highc=0) SetNv(Starta=%VAR%A) SetNv(Startb=%VAR%B) *Looper Inc(b) Seek(%nv%newstemp%NEWS%VAR%A.%VAR%B) IfNotTrue(Goto(BumpIt)) Goto(Looper) *BumpIt SetEqual(c=%VAR%B) ; c will be destination and b will be source extension AddVar(%VAR%B+-1=b) Rename(%nv%newstemp%hdr%VAR%A.%VAR%B,%nv%newstemp%hdr%VAR%A.%VAR%C) Rename(%nv%newstemp%news%VAR%A.%VAR%B,%nv%newstemp%news%VAR%A.%VAR%C) if (%var%c)>(%nv%highc%) then setnv(highc=%var%c) If(&b)>(0) then Goto(BumpIt) seek(%nv%newstemp%news%var%a.0) if (%aresp%)=(No) then zap(%nv%newstemp%News%var%a.0) zap(%nv%newstemp%hdr%var%a.0) endif SetEqual(a=%NV%STARTA%) ;SetEqual(b=%NV%STARTB%) SetEqual(b=%nv%highc%) SetEqual(/nva=%VAR%A) SetEqual(/nvb=%VAR%B) setnv(highc=) SetNv(starta=) SetNv(startb=) Return LISTCTL0Clearscr Say(&7&Users currently registered on&15& %BBS%&CR&) Say(&14&Name Calling From) Say(&10&-----------------------------------------------------------------) sPause(5) ListUsers(40,15,3) linefeed(1) log(--,Listed BBS users) Enter Return ;go back to menu RESTVARSCTL■setequal(a=%nv%a0%) setequal(b=%nv%b0%) setequal(c=%nv%c0%) setequal(d=%nv%d0%) setequal(e=%nv%e0%) setequal(f=%nv%f0%) setequal(g=%nv%g0%) setequal(h=%nv%h0%) setequal(i=%nv%i0%) setequal(j=%nv%j0%) setequal(k=%nv%k0%) setequal(l=%nv%l0%) setequal(m=%nv%m0%) setequal(n=%nv%n0%) setequal(o=%nv%o0%) setequal(p=%nv%p0%) setequal(q=%nv%q0%) setequal(r=%nv%r0%) setequal(s=%nv%s0%) setequal(t=%nv%t0%) setequal(u=%nv%u0%) setequal(v=%nv%v0%) setequal(w=%nv%w0%) setequal(x=%nv%x0%) setequal(y=%nv%y0%) setequal(z=%nv%z0%) setequal(/nva0=) setequal(/nvb0=) setequal(/nvc0=) setequal(/nvd0=) setequal(/nve0=) setequal(/nvf0=) setequal(/nvg0=) setequal(/nvh0=) setequal(/nvi0=) setequal(/nvj0=) setequal(/nvk0=) setequal(/nvl0=) setequal(/nvm0=) setequal(/nvn0=) setequal(/nvo0=) setequal(/nvp0=) setequal(/nvq0=) setequal(/nvr0=) setequal(/nvs0=) setequal(/nvt0=) setequal(/nvu0=) setequal(/nvv0=) setequal(/nvw0=) setequal(/nvx0=) setequal(/nvy0=) setequal(/nvz0=) return TFILESCTLaif (%nv%wipmode%)=(1) then loadmem(control\macros\tag-wip.ctl) *checkback linefeed(1) *fname say(&3&Enter the name of the file to tag or &11&(ENTER)&3& to quit&12&: &14&( )&15&*) back(13) menuask(%NOCR%%CRON%%LEN%12%*) Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) if (%RESP%)=(<CR>) then goto (ret) setequal(s=%resp%) adddef(.%DEFEXT%) setequal(r=%resp%) seek(passfile.lst) ifnottrue(goto(nopass)) inpopen(passfile.lst) setequal(a=%resp%,) len(%var%a) setequal(c=%aresp%) do inpread setequal(d=%aresp%) get(&d,1,%var%c) if (%aresp%)=(%var%a) then goto (el) fendif(nopass) loop *el inc(c) get(&d,%var%c,100) setequal(a=%aresp%) Say(&CR&&3&Please enter the password for this file&12&: &15&*) cgetpass(o) if (%resp%)=(%var%a) then goto (nopass) inpclose goto(fname) *nopass setequal(/resp=%var%r) inpclose FIND(%RESP%,?) NOTIF (%ARESP%)=(0) THEN GOTO (W) FIND(%RESP%,*) NOTIF (%ARESP%)=(0) THEN GOTO (W) seek(%pbtemp%tagged.%NODE%) setequal(v=%aresp%) *stseek setequal(p=%RESP%) len(%var%s) back(%ARESP%) setequal(m=%resp%) upcase(m) say(%VAR%M) setequal(z=/:downloads/) lines(%pbtemp%tagged.%node%) addvar(/:dailydl/+%aresp%=y) if (%var%y)=(%dailyL%) then goto (badratio) addvar(%var%z+%aresp%=y) setequal(/downloads=%var%y) seekfall(%var%p) setequal(/downloads=%var%z) if (%RATIO%)=(NOT OK) then goto (badratio) If (%ARESP%)=(INVALID) then goto (invfn) if (%ARESP%)=(No) then goto (nothere) If (%ARESP%)=(NOT ENOUGH) then goto (notenuf) selfarea(%aresp%) CmpVal(%sec%,%FILSEC%) IfTrue(goto (notenuf)) if (&v)=(Yes) then goto (sometagged) *doAdd size(%FILPATH%%var%p) setequal(p=%aresp%) ttime(%aresp%) setequal(s=%aresp%) setequal(a=%TTIM%) if (%free%)=(Yes) then setequal(a=0) addvar(%var%a+%NV%TotalTime%=a) CmpVal(%var%a,/:LEFT/) ;see If they have enough time IfNotTrue(Goto (notenuftime)) say(&CR&&15&──────────────────> %RESP% Information:&11&&CR&) if (%FREE%)=(Yes) then say(Free Download, *) addcomma(%var%p) say(%ARESP% bytes &3&(*) say(%VAR%S at %BAUD% Baud)&CR&) setequal(/nvTotalTime=%var%A) setequal(p=%resp%) AppendTo(%Pbtemp%tagged2.%NODE%,%FILPATH%%var%p) AppendTo(%pbtemp%tagged.%NODE%,%var%p) setequal(a=0) if (%nv%totalfree%)=() then goto (nh) setequal(a=%nv%totalfree%) *nh if (%free%)=(Yes) then inc(a) setequal(/nvTotalFree=%var%a) AppendTo(%pbtemp%free.%NODE%,%FREE%) selfarea(/:lastdown/) log(--,%VAR%P tagged) goto (fname) *sometagged seekfile(%pbtemp%tagged.%NODE%,%RESP%) setequal(p=%RESP%) ifnottrue (goto (doadd)) say(&CR&&15&%RESP% &7&has been found in your tagged files list.) lview(%Pbtemp%tagged.%NODE%,10,7) say(&CR&&3&Do you still want to tag this file? &9&[ ]&14&*) back(4) yesnoask() if (%resp%)=(No) then say() if (%resp%)=(No) then goto (fname) setequal(/resp=%var%p) goto (doAdd) *invfn Display(Display\INVALID) flushout selfarea(/:LASTDOWN/) Enter goto (fname) *notenuf Display (Display\fbadsec) selfarea(/:LASTDOWN/) return *NotHere selfarea(/:lastdown/) Display(Display\notfnd) goto (fname) *ret linefeed(1) return *W SAY() loadEXEC(WS.EXE,/F:%FAREA%.BBS /N:%pbtemp%FREE.%NODE% /O:%pbtemp%TAGGED.%NODE% /2:%pbtemp%TAGGED2.%NODE% /S:%SEC% /T:%RESP%) IF (%ARESP%)=(0) THEN GOTO (NOTHERE) if (%nv%indel%)=(1) then return LOADsub(CONTROL\MACROS\taglist.CTL) enter return *badratio Display(Display\BADRATIO) selfarea(/:LASTDOWN/) linefeed(1) goto (fname) *notenuftime Display(Display\NODLTIME) goto (fname) *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=25) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(Fname) NEWSCTL$if (%graphics%)=(RIP) then clearscr seek(display\newsltr.asc) iftrue (goto (view)) say(&15&&CR&Sorry, there is no newsletter today.&CR&) secpause(1) return *view log(--,Viewed Newsletter) if (%nv%wipmode%)=(1) then goto (WipView) display (display\newsltr) linefeed(1) enter return *WipView inpopen(display\newsltr.asc) setequal(a=0) *topf inpread writeln(%aresp%) Inc(a) if (%var%a)>(17) then goto (theend) fendif (theend) goto (topf) *theend inpclose loadmem(control\ewipscr.ctl,setnv(wipf=newstmpl)) FORWCTLgif (%nv%wipmode%)=(1) then loadsub(control\exitwip.ctl) SetEqual(/nvold=/:LASTMSG/) SetEqual(/nvccs=0) menuask(&CR&&15&Forward message to which user (&14&[ENTER] &15&quits)?&12&: &14&*) If(%RESP%)=() then Return If(%RESP%)=(<CR>) then Return seekuser(%RESP%) say() IfNotTrue (Goto(NotFound)) ;IfNotTrue (setequal(a=0)) ;ifnottrue (return) ;say(&CR&&11&Forwarding Message...*) *GoOn iftrue (setequal(a=%NDNUMB%)) if (%MSGPVT%)=(PRIVATE) then setequal(k=Yes) notif (%MSGPVT%)=(PRIVATE) then setequal(k=No) MenuEqual(b=%RESP%) MenuEqual(l=%MSGTO%) SetEqual(/nvaddressee=%RESP%) ;If(&b)=(&l) then Goto(SelfForward) nicequal(b=%MSGTO%) zap(%pbtemp%forw.%NODE%, [ FORWARDED MESSAGE ]) ;code changed appendto(%pbtemp%forw.%NODE%, ■ Originally Addressed to %var%b) ;5-13-95 Nicequal(b=%MSGFROM%) appendto(%pbtemp%forw.%NODE%, ■ Originally Sent By %VAR%B) ; appendto(%pbtemp%forw.%NODE%, ■ Originally Regarding %MSGDESC%) ; appendto(%pbtemp%forw.%NODE%, ■ Originally dated %MSGSNTD% %MSGSNTT%) ; kill(%pbtemp%forw1.%node%) capture(%pbtemp%forw1.%NODE%) Goto(ClearAndIns) ;loadexec(command.com,/c copy forw.%NODE%+forw1.%NODE% forwrd.%NODE% >nul) *DoIt inittxt import(%pbtemp%forwrd.%NODE%,,1,100) SetEqual(/nvaddresser=%MSGFROM%) SetEqual(/nvsubject=%MSGDESC%) ;LoadMem(control\macros\menter.ctl,goto(Add)) say(&CR&&11&Forwarding Message...*) writemsg(%NV%CONF%,%NV%ADDRESSEE%,%MSGFROM%,%MSGDESC%,%var%a,%var%k,0,%MSGNET%,%MSGATTNAME%,%STOREDEXT%) SelArea(%NV%OLD%) SetEqual(/nvold=) SetEqual(/nvconf=) say(Done!) Say(&4&--- Message Sent ---) himsg(/:LASTMSG/) setequal(f=%ARESP%) return *SelfForward capture(%pbtemp%forwrd.%NODE%) Goto(DoIt) *ClearAndIns inittxt SetEqual(/nvconf=/:LASTMSG/) Say(&15&Would you like to forward this message to a different conference? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If(%RESP%)=(Yes) Then Goto(NewConf) *Insert2 Say(&CR&&15&Would you like to insert any text into the forwarded message? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If(%RESP%)=(Yes) then Goto(Add) Goto(abt) *add resetpause If (%FULL%)=(Yes) Then Goto (fmode) ClearScr Say(&14&You may now enter text to insert into the forward. Press (&11&ENTER&14&) to end.&CR&) Say(&3& (--------/---------/---------/---------/---------/---------/---------/----)) If(%MAXLINE%)>(1) then showtxt2(15,7) gettext(15,7,%MAXLINE%,99) delextra Goto(ent) *save kill(%pbtemp%forw3.%NODE%) ;Say(MAXLINE=%MAXLINE%) ;Enter capture(%pbtemp%forw3.%node%,%MAXLINE%) NicEqual(b=%NAME%) Kill(%pbtemp%forw2.%NODE%) Zap(%pbtemp%forw2.%NODE%,Text that follows inserted by %VAR%B ------------------------------>) AppendTo(%pbtemp%forw2.%NODE%,) Kill(%pbtemp%forw4.%NODE%) Zap(%pbtemp%forw4.%NODE%, ) ;AppendTo(%pbtemp%forw4.%NODE%,---------- End Of Inserted Text ------------->) ;AppendTo(%pbtemp%forw4.%NODE%,) AppendTo(%pbtemp%forw4.%NODE%,Original Text of Message Follows: -------------------------------------->) AppendTo(%pbtemp%forw4.%NODE%,) loadexec(command.com,/c copy %pbtemp%forw.%NODE%+%pbtemp%forw2.%NODE%+%pbtemp%forw3.%NODE% %pbtemp%forwt.%node% >nul) loadexec(command.com,/c copy %pbtemp%forwt.%node%+%pbtemp%forw4.%NODE%+%pbtemp%forw1.%NODE% %pbtemp%forwrd.%NODE% >nul) Goto(DoIt) *ent display (display\FWD) Say(&3&What would you like to do with the text to insert?&12&: &15&*) MenuKey BigNiceSay (t:Throw Away,s:Save,e:Edit,a:Add,L:List,d:Delete Line,h:help) BigIf (t:abort,s:save,e:edit,L:list,a:add,d:del,h:help) Say(&CR&&12&Invalid selection ... Please try again.&CR&) FlushOut Goto (ent) *help NotIf (&z)=(15) Then display(display\help\fwd,/:SEC/) Goto (ent) *del showtxtl(11,3) cMenuAsk (&CR& &3&Please enter the first line to delete&12&: &15&*) Number(%RESP%) IfNotTrue (Goto (invn)) cmpval(%RESP%,%MAXLINE%) IfNotTrue (NotIf (%RESP%)=(%MAXLINE%) Then Goto (invn)) SetEqual(e=%RESP%) Say(&CR&&10&If you only want to delete one line, press (&11&ENTER&10&) here.) cMenuAsk (%CRON%&3& Please enter the last line to delete&12&: &15&*) SetEqual(g=%RESP%) If (&g)=(<CR>) Then SetEqual(g=%var%e) Say(&CR&&14&You have selected to delete the following block of text:) ShowTxtT(15,7,%VAR%E,%VAR%G) Say(&15&Are you sure you want to delete this text? (&12&Y&15&/&12&N&15&)&14&*) Back(4) SetEqual(/nvyndef=%YESNODEF%) Default(N) YesNoAsk(*) Default(%NV%YNDEF%) SetEqual(/nvyndef=) NotIf(%RESP%)=(Yes) then goto(delabort) DelLines(%var%e,%var%g) If (%ARESP%)=(ERROR) Then Goto (invn) Say(&CR&&11&Lines %var%e to %var%G have been deleted.) Goto (ent) *delabort Say(&CR&&12&Delete text aborted...) Goto(ent) *list linefeed(1) showtxtl(11,3) ;showtxtL is the same as showtxt except shows line numbers... linefeed(1) enter Goto (ent) *edit If (%FULL%)=(Yes) Then Goto (add) cMenuAsk (&CR&&3&Which line would you like to edit?&12&: &15&*) Number(%RESP%) IfNotTrue (Goto (invn)) If (%RESP%)=(%MAXLINE%) Then Goto (goedit) linefeed(1) cmpval(%RESP%,%MAXLINE%) If (%ARESP%)=(No) Then Goto (Invn) *goedit SetEqual(h=%MAXLINE%) gettext(15,7,%RESP%,%RESP%) setmax(%var%h) Goto (ent) *invn Say(&14&That line number doesn't exist in this message. &11&Try again, please.&CR&) Goto (ent) *abort Say(&CR&&15&Do you still want this message to be forwarded? (&12&Y&15&/&12&N&15&)&14&*) Back(4) SetEqual(/nvyndef=%YESNODEF%) Default(N) YesNoAsk(*) Default(%NV%YNDEF%) SetEqual(/nvyndef=) If(%RESP%)=(Yes) then Goto(Abt) kill(%pbtemp%forw1.%node%) kill(%pbtemp%forw.%node%) inittxt SetMode(reg) Say(&CR&&12&Message forward aborted!&CR&) Return *abt inittxt SetMode(reg) If(/:LASTMSG/)<>(%NV%CONF%) then AppendTo(%pbtemp%forw.%NODE%, ■ Originally in Conference #/:LASTMSG/) appendto(%pbtemp%forw.%NODE%, ) kill(%pbtemp%forw2.%NODE%) kill(%pbtemp%forw3.%NODE%) kill(%pbtemp%forw4.%NODE%) loadexec(command.com,/c copy %pbtemp%forw.%NODE%+%pbtemp%forw1.%NODE% %pbtemp%forwrd.%NODE% >nul) Goto(DoIt) *newconf Display(display\CHG,/:SEC/) MenuAsk(%CRON%&CR&&15&Forward to which conference? &14&*) If(%RESP%)=(<CR>) then Goto(confcancel) Number(%RESP%) IfNotTrue(Goto(InvConfNum)) If(%RESP%)>(%MAXAREA%) then Goto(Invconfnum) SetEqual(/nvold=/:LASTMSG/) SetEqual(/nvconf=%RESP%) SelArea(%NV%CONF%) EnufSec(%AREASEC%) IfNotTrue(Goto(NotEnuf)) Goto(insert2) *NotEnuf SelArea(%NV%OLD%) ; go back to previously selected message area SetEqual(/nvold=) SetEqual(/nvconf=) Say(&CR&&12&Your security level does not permit you access to that area.) SecPause(1) Goto(NewConf) *invconfnum Say(&CR&&12&That is an invalid conference number!&CR&) SecPause(1) Goto(newconf) *confcancel Say(&CR&&12&Operation Cancelled. This message will not be forwarded to another conference!) SecPause(2) Goto(Insert2) *notfound MenuEqual(b=%RESP%) Say(&12&%RESP% could not be located in our user index!&CR&) Say(&15&Forward the message anyway? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) SetEqual(a=0) ;a is user # of addressee of forward If(%RESP%)=(No) then Return SetEqual(/RESP=%VAR%B) Goto(GoOn) EDNEWSCTL█inittxt Import (news.txt,,1,99) showtxt2(15,7) gettext(15,7,%MAXLINE%,99) delextra zap(news.txt) setequal(a=0) do if (&a)=(%MAXLINE%) then return inc(a) showline(%var%a) appendto(news.txt,%aresp%) loop KILLFILECTL?*fname say(&CR&&3&Please enter the name of the file to kill&12&: &14&( )&15&*) back(13) menuask(%CRON%%LEN%12%*) If (%RESP%)=(<CR>) Then return adddef(.%DEFEXT%) say(&CR&&11&Please wait!... We're searching for the file...*) seekfall(%RESP%) if (%ARESP%)=(INVALID) then goto (invfn) if (%ARESP%)=(No) then goto (nothere) if (%ARESP%)=(NOT ENOUGH) then goto (notenuf) if (%RESP%)=(%ARESP%) then goto (moveerr) selFarea(%ARESP%) setequal(l=%RESP%) setequal(u=1) say(Found!&7&) *stopinp say(&CR&&14&Please wait, killing file...*) setequal(j=%FILPATH%) move2(%var%l,%var%j,,%FILAREA%,%FAREA%) resetlist listfile(%FAREA%) *endmove selfarea(/:LASTDOWN/) say(Done!) Return *invfn Display(Display\INVALID) flushout selfarea(/:LASTDOWN/) Enter goto (fname) *notenuf Display (Display\fbadsec) selfarea(/:LASTDOWN/) return *NotHere Display(Display\notfnd) goto (fname) *moveerr say(&CR&&14&The directory you specify is where the file already resides!&CR&) selfarea(/:lastdown/) return PICKMUSECTL┼;Say(Do you want to hear &11&ANSI &3&music? &9&[ ]&14&*) Say(&12&Only select 'Yes' to the following question if you are sure that your terminal) Say(program supports enhanced sound (i.e. WAV files, ANSI music, etc.).&CR&) Say(&15&Do you want to use enhanced sound? (&12&Y&15&/&12&N&15&)*) Back(4) YesNoAsk(*) if (%RESP%)=(Yes) then SetEqual(/ANSMUSIC=Y) if (%RESP%)=(No) then setequal(/ANSMUSIC=N) Log(--,Changed Enhanced Sound Mode) return TAG-WIPCTL▌*thetop setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=tag)) *getresp0 if (%nv%fromsub%)=(1) then setnv(fromsub=) return endif if (%nv%wiprestreq%)=(1) then goto (thetop) setequal(c=0A~) Jump (wipc) jump (getinput) if (%nv%wiprestreq%)=(1) then goto (thetop) writeln(Response from user: "%resp%") if (%resp%)=(Tag) then goto (dotag) if (%resp%)=(quit) then goto (doret) if (%resp%)=(Exit) then goto (doret) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then upcase(b) get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif setnv(filename=%nv%cText%) if (%nv%wipc%)=(filename) then goto (dotag) *NoCmnd setnv(wtxt=) goto (getResp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(200) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *wipask loadsub(control\wipask.ctl) ret *getinput writeln(Waiting for input from remote user.) setequal(y=180) jump (wipask) if (%aresp%)<>(24) then ret loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) jump (wipask) if (%aresp%)=(24) then loadmem(control\timeout.ctl) ret *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *whoc loadsub(control\macros\mwhowip.ctl) goto(thetop) *dotag *fname setequal(/resp=%nv%filename%) setnv(filename=) Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) if (%RESP%)=() then goto (getresp0) setequal(s=%resp%) upcase(s) adddef(.%DEFEXT%) setequal(r=%resp%) upcase(r) setequal(/resp=%var%r) setnv(r=%var%r) seek(passfile.lst) ifnottrue(goto(nopass)) inpopen(passfile.lst) setequal(a=%resp%,) len(%var%a) setequal(c=%aresp%) do inpread setequal(d=%aresp%) get(&d,1,%var%c) if (%aresp%)=(%var%a) then goto (el) fendif(nopass) loop *el inc(c) get(&d,%var%c,100) setequal(a=%aresp%) setnv(wiprestreq=1) loadsub(control\exitwip.ctl) Say(&CR&&3&Please enter the password for this file&12&: &15&*) cgetpass(o) if (%resp%)=(%var%a) then goto (nopass) inpclose setequal(c=01~) jump (wipc) comlineinput(45,l) goto(fname) *nopass if (%nv%wipmode%)=(1) then goto (inwip) setequal(c=01~) jump (wipc) comlineinput(45,l) *inwip setequal(r=%nv%r%) setnv(r=) setequal(/resp=%var%r) inpclose FIND(%RESP%,?) NOTIF (%ARESP%)=(0) THEN GOTO (W) FIND(%RESP%,*) NOTIF (%ARESP%)=(0) THEN GOTO (W) seek(%pbtemp%tagged.%NODE%) setequal(v=%aresp%) *stseek setequal(p=%RESP%) setnv(p=%resp%) ;len(%var%s) ;back(%ARESP%) setequal(m=%nv%ctext%) ;upcase(m) ;say(%VAR%M) setequal(z=/:downloads/) lines(%pbtemp%tagged.%node%) addvar(/:dailydl/+%aresp%=y) if (%var%y)=(%dailyL%) then goto (badratio) addvar(%var%z+%aresp%=y) setequal(/downloads=%var%y) seekfall(%var%p) setequal(/downloads=%var%z) if (%RATIO%)=(NOT OK) then goto (badratio) If (%ARESP%)=(INVALID) then goto (invfn) if (%ARESP%)=(No) then goto (nothere) If (%ARESP%)=(NOT ENOUGH) then goto (notenuf) selfarea(%aresp%) CmpVal(%sec%,%FILSEC%) IfTrue(goto (notenuf)) if (&v)=(Yes) then goto (sometagged) *doAdd setequal(p=%nv%ctext%) setnv(p=) size(%FILPATH%%var%p) setequal(p=%aresp%) ttime(%aresp%) setequal(s=%aresp%) setequal(a=%TTIM%) if (%free%)=(Yes) then setequal(a=0) addvar(%var%a+%NV%TotalTime%=a) CmpVal(%var%a,/:LEFT/) ;see If they have enough time IfNotTrue(Goto (notenuftime)) setequal(c=13~%nv%ctext% Information: ) write(%nv%ctext% Information: ) if (%FREE%)=(Yes) then setequal(c=%var%cFree Download, ) if (%free%)=(Yes) then writeln(Free Download,) addcomma(%var%p) setequal(c=%var%c%ARESP% bytes () write(%aresp% bytes () setequal(c=%var%c%VAR%S at %BAUD% Baud)~%nv%ctext% Tagged!~1~) writeln(%var%s at %baud% Baud)) writeln( -> %nv%ctext% Tagged! <-) setnv(a=%var%a) ;writeln(%var%c) jump (okbox0) setequal(a=%nv%a%) setnv(a=) setequal(/nvTotalTime=%var%A) setequal(p=%nv%ctext%) AppendTo(%pbtemp%tagged2.%NODE%,%FILPATH%%var%p) AppendTo(%pbtemp%tagged.%NODE%,%var%p) setequal(a=0) if (%nv%totalfree%)=() then goto (nh) setequal(a=%nv%totalfree%) *nh if (%free%)=(Yes) then inc(a) setequal(/nvTotalFree=%var%a) AppendTo(%pbtemp%free.%NODE%,%FREE%) selfarea(/:lastdown/) log(--,%VAR%P tagged) setequal(c=07~filename~ ~) jump (wipc) goto (getresp0) *sometagged seekfile(%pbtemp%tagged.%NODE%,%nv%ctext%) setequal(p=%nv%ctext%) ifnottrue (goto (doadd)) writeln(%resp% is already tagged.) setequal(c=13~%resp% is already tagged.~File Already Tagged~1~) jump (okbox0) setnv(filename=%nv%ctext%) goto (getresp0) *invfn flushout setequal(c=13~Invalid filename format. Filename must consist of eight characters followed by a period followed by a three character extension.~Invalid Filename~1~) jump (okbox0) selfarea(/:LASTDOWN/) setnv(filename=%nv%ctext%) goto (getresp0) *notenuf setequal(c=13~Your security level is not high enough to access that file.~Access Denied~1~) jump (okbox0) selfarea(/:LASTDOWN/) setnv(filename=%nv%ctext%) goto (getresp0) *NotHere setequal(c=13~The file could not be found. Please check the spelling and try again.~File Not Found~1~) jump (okbox0) selfarea(/:lastdown/) setnv(filename=%nv%ctext%) goto (getresp0) *ret linefeed(1) goto (doret) *W SAY() loadEXEC(WS.EXE,/F:%FAREA%.BBS /N:%pbtemp%FREE.%NODE% /O:%pbtemp%TAGGED.%NODE% /2:%pbtemp%TAGGED2.%NODE% /S:%SEC% /T:%RESP%,) IF (%ARESP%)=(0) THEN GOTO (NOTHERE) if (%nv%fromsub%)=(1) then setnv(fromsub=) return endif loadmem(control\macros\wipedtag.ctl) *badratio selfarea(/:LASTDOWN/) setequal(c=13~Your upload to download ratio has been exceeded. You must upload a file before you will be permitted to download any more files from the system.~Ratio Exceeded~1~) jump (okbox0) setnv(filename=%nv%ctext%) goto (getresp0) *notenuftime setequal(c=13~You do not have enough time to download that file.~Not Enough Time~1~) jump (okbox0) setnv(filename=%nv%ctext%) goto (getresp0) *OlHelp loadsub(control\exitwip.ctl) SetNv(AtPrompt=Yes) SetNv(Helpoption=25) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(thetop) *doret setnv(d=) setnv(p=) return DEFPROTCTLS*PickProt Display (Display\defprots) CAsk (%CRON%&15&Which protocol would you like (or N for None)?&12&: &14&*) If(%RESP%)=(<CR>) then Return Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(Olhelp) If(%ARESP%)=(/) then Goto(Anywhere) MenuEqual(/protocol=%RESP%) If(%NV%NEWUSER%)<>(Yes) then Log(--,Changed Default Protocol to %RESP%) return *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=14) ; protocol help LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(PickProt) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Goto(PickProt) MREADERCTLÜchkmes kill (gpm%node%) clearscr exec(pwrmail\pwrmail.exe node%node%.inf %BBSP%) seek(gpm%node%) ifnottrue(return) loadmem(control\macros\bye.ctl) WORKCTL▓If(%NV%INTL%)=(Yes) then Goto(Intl) If(%NV%INTL%)=(No) then Goto(Normal) Say(&15&Do you have an international phone number? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If(%RESP%)=(No) then Goto(normal) *Intl menuask(%CRON%&CR&&15&What is your work phone number?&12&: &14&*) If(%RESP%)=(<CR>) then Return Len(%RESP%) If(%ARESP%)<(10) then Goto(dp) repeating(%resp%) iftrue(goto (dp)) SetEqual(/WORK=%RESP%) *logandret If(%NV%NEWUSER%)<>(Yes) then Log(--,Changed Work Phone # to %RESP%) return *dp log(!!,User attempted to change work phone) log(!!,number to %RESP%, but is) log(!!,an invalid/existing phone number!) say(&CR&&12&You have entered an invalid phone number!&7&&CR&) SecPause(2) return *normal Say(&CR&&15&Please enter your work phone number&12&: &14&*) Picture(%CRON%###-###-####) If(%RESP%)=() then Goto(SetIt) repeating(%resp%) iftrue(goto (dp)) *SetIt SetEqual(/WORK=%RESP%) Goto(logandret) SCRLENCTL<*GetScrLen ;MenuAsk (&3&Please enter the new length for your screen&12&: &15&*) Say(&15&Please enter the length of your screen&12&: ( )&14&*) Back(4) SetEqual(a=/:SCREENLEN/) SetLen(a=3) SetFill(%VAR%A) MenuAsk(%CRON%%LEN%3%*) If(%RESP%)=(<CR>) then Return Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) SetEqual(/screenlen=%RESP%) If(%NV%NEWUSER%)<>(Yes) then Log(--,Changed Screen Length to %RESP%) return *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=135) ; screen length help LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(GetScrLen) PASSCTL░*GetPass ;Say(What would you like your new password to be?&12&: &15&*) Say(&15&What do you want as your password?&12&: &12&(*) Spaces(20) Say()&14&*) Back(21) cgetpass(%MIN%1%%LEN%20%.) ;If(%ARESP%)=(-1) then Return ; chr(-1) is getpass's way of returning <CR> If(%RESP%)=() then Return ; if <CR> pressed If(%RESP%)=(%NAME%) then Goto(TooEasy) If(%RESP%)=(/:NAME/) then Goto(TooEasy) SetNv(o=%VAR%O) MenuEqual(o=%FNAME%) If(%RESP%)=(&o) then Goto(TooEasy) MenuEqual(o=%LNAME%) If(%RESP%)=(&o) then Goto(TooEasy) SetEqual(o=%NV%O%) SetNv(o=) Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) If(%ARESP%)=(/) then Goto(Anywhere) SetNv(passtemp=%RESP%) Say(&CR&&15&Please re-enter your password for verification&12&: &12&(*) Spaces(20) Say()&14&*) Back(21) cgetpass(%MIN%1%%LEN%20%.) If(%ARESP%)=(-1) then Goto(NoMatch) If(%RESP%)<>(%NV%PASSTEMP%) then Goto(NoMatch) SetEqual(/PASS=%RESP%) SetNv(passtemp=) If(%NV%NEWUSER%)<>(Yes) then Log(--,Changed Password) return *NoMatch Say(&CR&&12&The two passwords did not match. Please try again...&CR&) Goto(GetPass) *TooEasy Say(&CR&&12&Please enter a more unique, hard-to-guess password.&CR&) Goto(GetPass) *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=119) ; help on password entry LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(GetPass) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Goto(GetPass) ALIASCTLS*GetAlias ;Ask(%LEN%20%What would you like your new alias to be?&12&: &15&*) Say(&15&What do you want to use as an alias?&12&: (*) Spaces(25) Say()&14&*) Back(26) SetEqual(a=/:ALIAS/) SetFill(%VAR%A) CAsk(%CRON%%LEN%25%*) if (%nv%newuser%)<>(Yes) then If(%RESP%)=(<CR>) then Return if (%resp%)=(<CR>) then goto (getalias) Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) If(%ARESP%)=(/) then Goto(Anywhere) MenuEqual(a=%RESP%) SeekType(a) SeekUser(%VAR%A) If(%ARESP%)<>(No) then if (%NDNUMB%)<>(%USERN%) then Goto(InUse) endif If(%NV%NEWUSER%)<>(Yes) then Log(--,Changed Alias From (/:ALIAS/) to (%RESP%)) SetEqual(/ALIAS=%RESP%) Return *InUse Log(--,Tried to Change Alias to (%RESP%)) Log(--, -- Alias already in use by another user) Say(&CR&&12&That alias is already in use by another user. Please select another...&CR&) Goto(GetAlias) *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=123) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(GetAlias) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Goto(GetAlias) CITYCTL⌠*GetCity Say(&15&What is your City and State address?&12&: (*) Spaces(25) Say()&14&*) Back(26) SetEqual(a=/:FROM/) SetLen(a=25) rtrim(a) SetFill(%VAR%A) Ask(%cron%%LEN%25%*) if (%nv%newuser%)<>(Yes) then If(%RESP%)=(<CR>) then Return if (%resp%)=(<CR>) then goto (getcity) if (%resp%)=() then goto (getcity) Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(Olhelp) If(%ARESP%)=(/) then Goto(Anywhere) SetEqual(/FROM=%RESP%) If(%NV%NEWUSER%)<>(Yes) then Log(--,Changed From (City,St)) return *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=116) ; help on city/state LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(GetCity) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Goto(GetCity) STREETCTL_*GetAddress ;Ask(What is your &11&street&3& address?&12&: &15&*) Say(&15&What is your street address (1/2)?&12&: (*) Spaces(30) Say()&14&*) Back(31) SetEqual(a=/:STREET1/) ; STREET1 = Street 1/2 SetLen(a=30) rtrim(a) SetFill(%VAR%A) Ask(%CRON%%LEN%30%*) If(%RESP%)=(<CR>) then Return Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(Olhelp) If(%ARESP%)=(/) then Goto(Anywhere) SetEqual(/STREET1=%RESP%) *Street2 Say(&15&What is your street address (2/2)?&12&: (*) Spaces(30) Say()&14&*) Back(31) SetEqual(a=/:STREET/) ; STREET = Street 2/2 SetLen(a=30) rtrim(a) SetFill(%VAR%A) Ask(%CRON%%LEN%30%*) If(%RESP%)=(<CR>) then SetEqual(/RESP=) Goto(SetIt2) endif Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) If(%ARESP%)=(/) then Goto(Anywhere) *SetIt2 SetEqual(/STREET=%RESP%) If(%NV%NEWUSER%)<>(Yes) then Log(--,Changed Street Address) return *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=115) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(GetAddress) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Goto(GetAddress) SEARCHMCTLQhimsg(/:LASTMSG/) setequal(f=%ARESP%) loadmem(control\READ.CTL,goto (search)) VIEWSCRCTL_loadsub(control\macros\view.ctl) log(--,Viewed %DFIL%) setequal(/nvviewme=) return return BLTDLCTLÉ ;Configuration: setequal(^51=c:\fd\fdo.bat) ;FULL PATH TO FILE setequal(^50=fdo.bat) ;FILENAME ITSELF ;----------------------------------------------------------------------------- setequal(d=^:50^) *PICKP Display (Display\DN-PROTS) MenuAsk (%MIN%1%&3&Which transfer protocol would you like to use?&11&(or Q to Quit)&12&: &15&*) Find(%RESP%,\) ;make sure they didnt stick a backslash in there NotIf (%ARESP%)=(0) Then return if (%resp%)=(Q) then return SetEqual(b=%RESP%) Seek(protocol\%var%b-VD.BT) ;check to see If protocol exists.. IfNotTrue(Goto (pickp)) Len(%var%b) NotIf (%ARESP%)=(1) then goto (nobat) Say(&CR&&3& Would you like to download this file? &9&[ ]&14&*) Back(4) YesNoAsk(*) If (%RESP%)=(No) Then return say(&3&Would you like us to log you off afterwards? &9&[ ]&14&*) back(4) yesnoask(*) SetEqual(m=%RESP%) fcopy(^:51^,zvtemp\^:50^) Say(&CR&&11&We're sending "^:50^". Please get ready to receive it now.) If (%LOCAL%)=(TRUE) Then return FixFile(protocol\%var%b-vd.bt,protocol\%var%b-vd.bat) InitClock Exec(protocol\%var%b-vd.BAT│) Kill(protocol\%var%b-vd.bat) If (%LOCAL%)=(FALSE) Then toglocal NotIf (%ARESP%)=(0) Then Goto (nsc) XferTime SetEqual(e=%ARESP%) Size(zvtemp\%var%d) MultVar(%XMIN%*60=o) DivVar(%ARESP%/%var%o=g) ;calculate CPS rate CnvtK(%ARESP%) AddVar(%ARESP%+/:KDOWN/=o) SetEqual(/KDOWN=%var%o) Say(%BEEP%*) Log(--,%var%d Downloaded from %var%e.) Log(--,Rate: %var%g CPS) AppendTo(logs\DOWNLOAD.%NODE%,%var%d downloaded by %NAME% at %TIME% on %DATE%.) SetEqual(a=/:DOWNLOADS/) inc(a) SetEqual(/DOWNLOADS=%var%a) If (%LOCAL%)=(TRUE) Then toglocal Display (Display\SUCCESS) if (&m)=(Yes) then loadsub(control\autooff.ctl) Enter return *NOBAT Say(&CR&&15&No batch protocols allowed for transfering this file.&CR&) Goto (pickp) *nsc toglocal return VERCTL/clearscr say(&14&Powerboard &3&Bulletin Board System, Ver. &11&%ver%&7&) say(&CR&Copyright, 1991-94, NuIQ Software, Inc.) say(All Rights Reserved.&CR&) say(&CR&&14&Microsoft(R) &3&MS-DOS, Ver. &11&%DOSVER%&7&) say(&CR&Copyright Microsoft Corporation) say(All Rights Reserved.&CR&) enter return MESSFW0CTL√setequal(g=0) namequal(a=%MSGTO%) namequal(b=%NAME%) enufsec(100) iftrue(goto(okf)) if (&a)=(&b) then goto (okf) namequal(a=%MSGFROM%) if (&a)=(&b) then goto (okf) setequal(s=5) setequal(g=1) return *okf loadmem(control\macros\forw0.ctl) YOURCTLGcmenuask(&CR&&3&Starting at which message number?&11&(%var%n-%var%f)&12&: &15&*) say(&CR&&11&Searching...|) clearmem seekto(/:LASTMSG/,%NAME%,%RESP%) if (%ARESP%)=(ERROR) then return log(--,Scanned for (Y)our mail) eline(25) zap(seeking.%NODE%,1) appendto(seeking.%NODE%,%NAME%) setequal(r=20) setequal(u=0) return FREADCTL7if (%nv%wipmode%)=(1) then loadmem(control\macros\freadwip.ctl) if (%graphics%)=(RIP) then clearscr display(display\READF) *fname say(&3&Enter name of the file to read (ENTER=Quit)&12&: &14&( )&15&*) back(13) menuask(%NOCR%%CRON%%LEN%12%*) if (%RESP%)=(<CR>) then goto (ret) adddef(.%DEFEXT%) *here seekfall(%RESP%) if (%ARESP%)=(INVALID) then goto (invfn) if (%ARESP%)=(No) then goto (nothere) if (%ARESP%)=(NOT ENOUGH) then goto (notenuf) selFarea(%ARESP%) linefeed(1) view(%NOPERC%%FILPATH%%RESP%) selfarea(/:LASTDOWN/) enter Return *invfn Display(Display\INVALID) flushout selfarea(/:LASTDOWN/) Enter goto (fname) *NotHere Display(Display\notfnd) goto (fname) *notenuf Display (Display\fbadsec) selfarea(/:LASTDOWN/) return *ret linefeed(1) return KILLMESSCTLsetequal(g=1) enufsec(100) iftrue(goto (stkill)) setequal(a=%NAME%) upcase(a) setequal(i=%MSGFROM%) upcase(i) setequal(j=%MSGTO%) upcase(j) notif (&i)=(&a) then notif (&j)=(&a) then setequal(g=0) if (%MSGNAMEC%)=(Yes) then setequal(g=0) if (&g)=(0) then return *stkill ;Say(&CR&&15&Are you sure you want to kill this message? (&12&Y&15&/&12&N&15&)&14&*) ;Back(4) ;YesNoAsk(*) ;NotIf(%RESP%)=(Yes) then Return msgkill (/:LASTMSG/,%var%y) say(&12&&CR&Message #%var%y has been deleted!&CR&) return NREADCTL▓setequal(g=0) cmpval(%var%f,%RESP%) iftrue(setequal(g=1)) iftrue(return) cmpval(%var%n,%RESP%) ifnottrue(setequal(/resp=%var%n)) setequal(w=1) setequal(y=%RESP%) return CHANGECTLHif (%nv%wipmode%)=(1) then loadmem(control\macros\change-w.ctl) delimit( ,;) ;---PowerStak Block 1 len(%nv%queue%) notif (%aresp%) = (0) then setequal(/resp=%nv%queue%) goto(stk) ;If something in the stack then... endif ;---PowerStak Block 1 End--- NotIf(%FAREA%)=(AREAS\FAREA/:LASTMSG/) then Display(display\nofareas) Enter endif display(%FAREA%) If(/:EXPERT/)<>(Y) then Say(&CR&&12&Please note that other conferences may have different file areas.) *bkh CAsk(%CRON%&CR&&15&Which file area would you like? (ENTER=Quit)&12&: &14&*) ;---PowerStak Block 2 *stk setequal(a=%resp%) DEQUEUE(a) setequal(/nvqueue=%var%a) setequal(/resp=%aresp%) ;---PowerStak Block 2 End--- If (%RESP%)=(<CR>) then Return Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) If(%ARESP%)=(/) then Goto(Anywhere) MenuEqual(/RESP=%RESP%) *sa number(%resp%) ifnottrue(return) CmpValo(%MAXFAREA%,%RESP%) IfTrue(goto (bds)) SelFarea(%RESP%) CmpVal(%sec%,%FILSEC%) IfTrue(goto (nofs)) SetEqual(/LASTDOWN=%RESP%) if (%CD%)=(Yes) then display(%CDPath%/:lastdown/\welc) if (%CD%)=(No) then Display(%FILPATH%welc) Say(&CR&&11&Area #%RESP%: &15&%FILNAME% &11&is now selected!&CR&) log(--,Changed to %FILNAME% file area) Say(&15&Would you like to list this area? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk() If (%RESP%)=(Yes) Then loadsub(control\macros\flist.ctl) Return *bds loadsub(control\macros\badsel.ctl) ;Clear Stack on Error! ;---PowerStak Block 3 setequal(/nvqueue=) ;---PowerStak Block 3 End Return *nofs display(display\NOFSEC) selfarea(/:lastdown/) return *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=19) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(Bkh) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Goto(Bkh) FREADWIPCTLw*thetop jump (dispscr) *initBox setequal(c=14~listbox~1000~%nv%high%~) jump (wipc) *GetResp0 if (%nv%fromsub%)=(1) then setnv(fromsub=) goto (userfind) endif setequal(c=0A~) jump (wipc) jump (getInput) writeln(Response from user: "%resp%") if (%nv%wiprestreq%)=(1) then goto (thetop) if (%resp%)=(View) then goto (userfind) if (%resp%)=(begin) then goto (userfind) if (%resp%)=(Exit) then goto (ret0) if (%resp%)=(quit) then goto (ret0) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) if (%var%b)=(-1) then goto (s2) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif if (%nv%wipc%)=(filename) then setNv(key=%nv%Ctext%) *NoCmnd setnv(wtxt=) goto (getResp0) *UserFind setequal(c=14~listbox~1000~%nv%high%~) jump (wipc) SetActivity (Read Textfile) seekfall(%nv%key%) if (%ARESP%)=(INVALID) then goto (invfn) if (%ARESP%)=(No) then goto (nothere) if (%ARESP%)=(NOT ENOUGH) then goto (notenuf) selFarea(%ARESP%) inpopen(%filpath%%nv%key%,4) *Main *Stk if (%nv%key%)=() then goto (notext) log (--,Viewing text file:%nv%key%) SetEqual(n=1) ;user number to search from *s2 SetEqual(y=0) *Searching fendif(nomore) inpread Inc(y) if (%aresp%)=() then setequal(/aresp= ) writeln(%aresp%) setequal(c=07~listbox~%aresp%~) jump (wipc) if (%var%y)=>(%nv%high%) then goto (donef) Goto(Searching) *NoMore ; writeln(No more matches to the text you specified could be found.) ; setequal(c=13~No more matches to the text you specified could be found.~End of List~1~) ; jump (okbox0) goto (getresp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(50) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *wipask loadsub(control\wipask.ctl) ret *getinput writeln(Waiting for input from remote user.) setequal(y=180) jump (wipask) if (%aresp%)<>(24) then ret loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) jump (wipask) if (%aresp%)=(24) then loadmem(control\timeout.ctl) ret *donef write(Updating list box on user's screen ... ) setequal(c=07~listbox~-1~) jump (wipc) setequal(c=0F~listbox~Read Text File~1~1~2~) jump (wipc) setequal(c=0F~RecCount~%nv%high%~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) setequal(c=0A~) jump (wipc) writeln(Done!) goto(getresp0) *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *notext writeln(No text was specified. Enter the filename to view and try again...) setequal(c=13~No text was specified. Please enter the filename to view and try again or click "Exit" to exit.~No Text Specified~1~) jump (okbox0) goto (getresp0) *ret0 selfarea(/:LASTDOWN/) return *invfn flushout setequal(c=13~Invalid filename format. Filename must consist of eight characters followed by a period followed by a three character extension.~Invalid Filename~1~) jump (okbox0) selfarea(/:LASTDOWN/) setnv(filename=%nv%ctext%) goto (getresp0) *NotHere setequal(c=13~The file could not be found. Please check the spelling and try again.~File Not Found~1~) jump (okbox0) selfarea(/:lastdown/) setnv(filename=%nv%ctext%) goto (getresp0) *notenuf setequal(c=13~Your security level is not high enough to access that file.~Access Denied~1~) jump (okbox0) selfarea(/:LASTDOWN/) setnv(filename=%nv%ctext%) goto (getresp0) *ret linefeed(1) setnv(high=) goto (ret0) *dispscr setnv(high=21) setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=readfile)) ret AVAILCTL°*GetAvail Say(&15&Would you like to be available to other users for multinode chat? (&12&Y&15&/&12&N&15&)*) Back(4) YesNoAsk(&14&*) SetEqual(/DEFAVAIL=%RESP%) McAvail(%RESP%) Log(--,Changed Default Available for Chat to %RESP%) Return *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=126) ; available for chat help LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(GetAvail) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Goto(GetAvail) SINCECTL╠setequal(g=0) msghigh(0) setequal(y=%ARESP%) cmpval(%var%f,%var%y) iftrue (setequal(g=1)) iftrue (return) cmpval(%var%n,%VAR%Y) ifnottrue(setequal(y=%var%n)) setequal(w=1) setequal(s=0) return CONAMECTL╩*GetCoName ;say(What do you wish to change your organization's name to?&12&: &15&*) Say(&15& What company do you work for?&12&: (*) SetEqual(a=/:COMPANY/) SetLen(a=30) rtrim(a) Spaces(30) Say()&14&*) Back(31) SetFill(%VAR%A) ask(%LEN%30%%CRON%*) If(%RESP%)=(<CR>) then Return Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OLhelp) If(%ARESP%)=(/) then Goto(Anywhere) SetEqual(/COMPANY=%RESP%) If(%NV%NEWUSER%)<>(Yes) then Log(--,Changed From (Company)) return *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=125) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(GetCoName) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Goto(GetCoName) CHGMHSCTLW*GetName say(&15&What do you wish your new MHS Gateway identity to be?&12&: ( )&14&*) back(9) cask(%CRON%%LEN%8%*) If(%RESP%)=(<CR>) then Return Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) If(%ARESP%)=(/) then Goto(Anywhere) Len(%RESP%) If(%ARESP%)<(8) Goto(Invalid) SetEqual(/MHSNAME=%RESP%) Log(--,Changed From (MHS Name)) return *Invalid Say(&CR&&12&That is an invalid MHS Gateway name. Please try again...&CR&) Goto(GetName) *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=142) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(GetName) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Goto(GetName) *Bsel LoadSub(control\macros\badsel.ctl) ;Clear Stack on Error! ;---PowerStak Block 3 setequal(/nvqueue=) ;---PowerStak Block 3 End Goto(GetName) ZIPPBCTLk get (/:memo/,1,1) notif (%aresp%)=(#) then return mkdir(%pbtemp%zvtemp) kill(%pbtemp%zvtemp\*.*) get (/:memo/,2,1) setequal(a=%aresp%) say(&CR&&13&This version is dated: &11&*) if (&a)=(0) then fdate(\tb\beta.exe) if (&a)=(3) then fdate(\tb\beta3.exe) if (&a)=(9) then fdate(\tb\beta9.exe) say(%Aresp%&CR&) say(&3&Would you like to download this version? &9&[ ]&14&*) back(4) yesnoask(*) if (%resp%)=(No) then return say(&CR&&14&Adding your serial number ...) if (&a)=(0) then fcopy(\tb\beta.exe,%pbtemp%zvtemp\pboard.exe) if (&a)=(3) then fcopy(\tb\beta3.exe,%pbtemp%zvtemp\pboard.exe) if (&a)=(9) then fcopy(\tb\beta9.exe,%pbtemp%zvtemp\pboard.exe) seek(%pbtemp%zvtemp\pboard.exe) ifnottrue(return) get(/:memo/,3,20) exec(\serial\serial.exe %var%a %pbtemp%zvtemp\pboard.exe #%aresp%│) say(&CR&&11&Zipping Powerboard for you ...) say(\dos\pkz2.exe -ex %pbtemp%zvtemp\%date% %pbtemp%zvtemp\pboard.exe) exec(\dos\pkzip.exe -ex %pbtemp%zvtemp\%date%.ZIP %pbtemp%zvtemp\pboard.exe│) SetEqual(d=%date%.zip) say(d:%var%d!) Seek(%pbtemp%zvtemp\%date%.zip) say(Seek, ARESP:%ARESP%!) if (%aresp%)=(No) then return *PICKP say( ->) ; Display (Display\DN-PROTS) say( -<) MenuAsk (%MIN%1%&3&Which transfer protocol would you like to use?&11&(or Q to Quit)&12&: &15&*) Find(%RESP%,\) ;make sure they didnt stick a backslash in there NotIf (%ARESP%)=(0) Then return if (%resp%)=(Q) then return SetEqual(b=%RESP%) Seek(protocol\%var%b-VD.BT) ;check to see If protocol exists.. IfNotTrue(Goto (pickp)) Len(%var%b) NotIf (%ARESP%)=(1) then goto (nobat) Say(&CR&&3& Would you like to download this file? &9&[ ]&14&*) Back(4) YesNoAsk(*) If (%RESP%)=(No) Then return say(&3&Would you like us to log you off afterwards? &9&[ ]&14&*) back(4) yesnoask(*) SetEqual(m=%RESP%) Say(&CR&&11&We're sending "%DATE%.ZIP". Please get ready to receive it now.) If (%LOCAL%)=(TRUE) Then return FixFile(protocol\%var%b-vd.bt,protocol\%var%b-vd.bat) InitClock Exec(protocol\%var%b-vd.BAT│) Kill(protocol\%var%b-vd.bat) If (%LOCAL%)=(FALSE) Then toglocal NotIf (%ARESP%)=(0) Then Goto (nsc) XferTime SetEqual(e=%ARESP%) Size(%pbtemp%zvtemp\%var%d) MultVar(%XMIN%*60=o) DivVar(%ARESP%/%var%o=g) ;calculate CPS rate CnvtK(%ARESP%) AddVar(%ARESP%+/:KDOWN/=o) SetEqual(/KDOWN=%var%o) Say(%BEEP%*) Log(--,%var%d Downloaded from Zip:%var%e.) Log(--,Rate: %var%g CPS) AppendTo(logs\DOWNLOAD.%NODE%,%var%d downloaded by %NAME% at %TIME% on %DATE%.) SetEqual(a=/:DOWNLOADS/) inc(a) SetEqual(/DOWNLOADS=%var%a) If (%LOCAL%)=(TRUE) Then toglocal Display (Display\SUCCESS) kill(%pbtemp%zvtemp\*.*) if (&m)=(Yes) then loadsub(control\autooff.ctl) Enter return *NOBAT Say(&CR&&15&No batch protocols allowed for transfering this file.&CR&) Goto (pickp) *nsc toglocal return EVENTCTLësay(&14& There is a system event coming up in /:left/ minutes. Please try) say( this function at a later time.) say() enter return MVBAT)@echo off move \pb\control\macros\%1 . CCLINECTL *AddCCLine ;Kill(cc1.%NODE%) Kill(%pbtemp%ccline.%NODE%) ;Capture(cc1.%NODE%,%MAXLINE%) Zap(%pbtemp%ccline1.%NODE%, ) ;AppendTo(ccline1.%NODE%, ) ; don't put extra blank line SetEqual(/nvq=%VAR%Q) SetEqual(/nvi=%VAR%i) SetEqual(q=1) Goto(TheLoop) *Cont If(%NV%CCING%)=(1) then Return SetEqual(/nvccing=) loadexec(command.com,/c copy %pbtemp%cc1.%NODE%+%pbtemp%ccline1.%NODE% %pbtemp%ccline.%NODE% >nul) inittxt import(%pbtemp%ccline.%NODE%,,1,100) Return *TheLoop SetEqual(i=nv%cc%VAR%Q%) Prc(%%VAR%I) ;MenuEqual(/resp=%NV%ADDRESSEE%) If(%ARESP%)=(%NV%ADDRESSEE%) then Goto(SkipAndInc) NicEqual(/resp=%ARESP%) If(&q)=(1) then AppendTo(%pbtemp%ccline1.%NODE%,CC: %RESP%) If(&q)=(2) then If(%NV%SKIP%)=(1) then AppendTo(%pbtemp%ccline1.%NODE%,CC: %RESP%) If(&q)=(2) then NotIf(%NV%SKIP%)=(1) then NotIf(%RESP%)=() then AppendTo(%pbtemp%ccline1.%NODE%, %RESP%) If(&q)>(2) then NotIf(%RESP%)=() then AppendTo(%pbtemp%ccline1.%NODE%, %RESP%) SetEqual(/nvskip=0) *IncIt Inc(q) If(&q)<=(%NV%CCs%) then Goto(TheLoop) SetEqual(q=%NV%Q%) SetEqual(i=%NV%I%) SetEqual(/nvq=) SetEqual(/nvi=) SetEqual(/nvskip=) Goto(cont) *SkipAndInc If(%NV%CCING%)=(1) then SetEqual(/nvskip=1) ;if this is your cc msg, skip your name Goto(incit) endif CHECKKEYCTLï;CHECKKEY.CTL -- gets a key from the user and checks if it is an arrow key. MenuKey(%CRON%) ASCII If(%ARESP%)=(27) then NotIf(%BAUD%)=(LOCAL) then goto(akey) If(%ARESP%)=(27) then Get(%RESP%,2,1) If(%ARESP%)=([) then Get(%RESP%,3,1) If(%ARESP%)=(D) then SetEqual(/RESP=-) ;left arrow If(%ARESP%)=(C) then SetEqual(/RESP=+) ;right arrow If(%ARESP%)=(A) then SetEqual(/RESP=8) ;up arrow If(%ARESP%)=(B) then SetEqual(/RESP=2) ;down arrow endif endif *MoreChecking If(%ARESP%)=(P) then SetEqual(/RESP=2) ;down arrow If(%ARESP%)=(H) then SetEqual(/RESP=8) ;up arrow If(%ARESP%)=(K) then SetEqual(/RESP=+) ;left arrow If(%ARESP%)=(M) then SetEqual(/RESP=-) ;right arrow endif If(%ARESP%)=(0) then Get(%RESP%,2,1) If(%ARESP%)=(P) then SetEqual(/RESP=2) ;down arrow If(%ARESP%)=(H) then SetEqual(/RESP=8) ;up arrow If(%ARESP%)=(K) then SetEqual(/RESP=+) ;left arrow If(%ARESP%)=(M) then SetEqual(/RESP=-) ;right arrow endif Return *AKEY ;remote arrow key detection routine MenuKey(%CRON%) If(%RESP%)=([) then MenuKey(%CRON%) If(%RESP%)=(D) then SetEqual(/RESP=-) ;left arrow If(%RESP%)=(C) then SetEqual(/RESP=+) ;right arrow If(%RESP%)=(A) then SetEqual(/RESP=8) ;up arrow If(%RESP%)=(B) then SetEqual(/RESP=2) ;down arrow endif Goto(MoreChecking) DBROCTL"display(display\broch) menuask(%NOCR%%LEN%1%%CRON%&CR&&3&Protocol to use for the transfer? &11&(1-3)&14& *) if (%RESP%)=(<CR>) then return if (%RESP%)=(Q) then return setequal(z=) if (%resp%)=(1) then setequal(z=z) if (%resp%)=(2) then setequal(z=y) if (%resp%)=(3) then setequal(z=x) if (%resp%)=(Z) then setequal(z=z) if (%resp%)=(Y) then setequal(z=y) if (%resp%)=(X) then setequal(z=x) if (%var%z)=() then return jump (clr) setequal(u=%var%h) jump (alo) eline(12) selfarea(10) jump(clr) setequal(d=BROCHURE.ZIP) setequal(q= &7&%var%d&11&) jump (doprot) notif (&t)=(0) then return if (&y)=(Yes) then log(--,Auto-Log Off...) if (&y)=(Yes) then loadmem(control\autooff.ctl) return *clr notif (%graphics%)=(ANSI) then goto (endif1) ansigoto(1,16) eline(79) ansigoto(1,17) eline(79) ansigoto(1,18) eline(79) ansigoto(1,19) eline(79) ansigoto(1,20) eline(79) ansigoto(1,21) eline(79) ansigoto(1,16) ret *endif1 eline(79) ret *doprot eline(79) say(&11&Now Sending%var%q. Please get ready to receive now.*) setequal(q=) fixfile(protocol\%var%z-d.bt,protocol\%var%z-d.bat) log(--,Downloading PB Brochure:%var%z) exec(protocol\%var%z-d│) setequal(t=%aresp%) kill(protocol\%var%z-d.bat) log(--,Exit Code:%aresp%) jump (clr) ret *ques say(%var%f) *gk menukey setequal(h=) if (%resp%)=(Y) then setequal(h=Yes) if (%resp%)=(N) then setequal(h=No) if (&h)=() then goto (gk) ret *alo jump (clr) setequal(f=&3&Log off after download is completed? *) jump (ques) setequal(y=%var%h) ret ATTASKCTL Say(&15&Would you like the BBS to skip asking you if you want to attach a file every) Say(time you save a message? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) SetEqual(/flag1=%RESP%) Log(--,Changed Default Bypass Attached File to %RESP%) return EXECTL╤ enufsec(50) ifnottrue(return) get (/:memo/,2,1) setequal(a=%ARESP%) len(/:memo3/) notif (%aresp%)=(0) then setequal(a=/:memo3/) say(Moving .EXE file ...*) fcopy(\pbcopy\temp2\pb%VAR%A.EXE,\pbcopy\temp\temp\temp\pboard.exe) notif (%ARESP%)=(0) then return say( Done!&CR&Adding your serial number ...*) get (/:memo/,3,10) setequal(b=%ARESP%) exec(\serial\serial.exe %VAR%A \pbcopy\temp\temp\temp\pboard.exe #%VAR%B /125A) ;say( Done!&CR&Adding .EXE to batch (may take a while) ...*) ;exec(\pbcopy\pc.exe \pbcopy\temp\temp\BBS2 \PBCOPY\temp\temp\temp\) ;say( Done!&CR&Compressing batch ...*) ;exec(\DOS\LHA.EXE U \PBCOPY\TEMP\MAIN2.LZH \PBCOPY\TEMP\TEMP\BBS2) say( Done!&CR&Zipping file ...*) exec(\DOS\PKZIP.EXE -eX \PBCOPY\EXE-%NODE%.ZIP \PBCOPY\TEMP\TEMP\TEMP\PBOARD.EXE) say( Done!&CR&Sending EXE-%NODE%.ZIP via ZMODEM ...) say() exec(\BBS\DSZ.COM port %PORT% speed %LBAUD% sz -m \PBCOPY\EXE-%NODE%.ZIP) log(--,Downloaded PB EXE file) return UPKTCTLφloadsub(control\exitwip.ctl) freespace(%CDRIVE%:) if (%ARESP%)<(%MINSPACE%) then loadmem (control\macros\nospace.ctl) InitTxt setactivity(Uploading Mail) setequal(m=0) setequal(h=0) setequal(/nvID=NUIQ) if (%qwkid%)<>() then setnv(ID=%qwkid%) setequal(/nvLOCALDIR=c:\King) if (%qwklocaldir%)<>() then setnv(localdir=%qwklocaldir%) mkdir(%PBTEMP%QWKWORK) if (%LOCAL%)=(TRUE) then fcopy(%NV%LOCALDIR%\%NV%ID%.REP,%PBTEMP%QWKWORK\%NV%ID%.REP) if (%ARESP%)<>(0) then say(&CR&&12&.REP reply packet not found.&7&&CR&) enter goto (doret) endif kill(%NV%LOCALDIR%\%NV%ID%.REP) goto(local) endif KILL(%PBTEMP%QWKWORK\*.*) zap(%PBTEMP%qwkconf) *selp display(display\qwkprot) menuask(%MIN%1%&3&Protocol to use? &11&(Q=Quit)&12&: &15&*) if (%RESP%)=(Q) then goto(gb) find(%RESP%,\) iftrue(goto(gb)) len(%RESP%) if (%ARESP%)<>(1) then goto (selp) setequal(a=%resp%) say(&CR&&11&Ready to receive %NV%ID%.REP. Please send the file now.&CR&) fixfile(protocol\%resp%-qu.BT,%PBTEMP%qwku.BAT) exec(%PBTEMP%qwku.BAT│) eline(79) if (%ARESP%)<>(0) then goto (gb) *local say(&CR&&14&UNZIPPING .REP Mail Packet, please wait . . . *) exec(pkunzip -o %PBTEMP%qwkwork\%NV%ID%.REP %PBTEMP%qwkwork) say(Done!&CR&) say(&14&Press &7&CTRL-K &14&to stop tossing.) say(&CR&&11&Tossing mail, please wait . . . *) setequal(x=129) size(%PBTEMP%qwkwork\%NV%ID%.msg) setequal(z=%aresp%) *st localkey(1) ifnottrue(goto (psa)) If (%ARESP%)=() Then Goto (done) *psa ;ifkey() ;iftrue(goto(done)) if (%var%x)=>(%var%z) then goto(done) kill(%pbtemp%qwkwork\extra.txt) kill(%pbtemp%qwkwork\excess.txt) fread(%PBTEMP%qwkwork\%NV%ID%.msg,%var%x,128,w) addvar(%var%x+128=x) get(&w,1,1) if (%aresp%)=( ) then setequal(K=N) if (%ARESP%)=(-) then setequal(k=N) if (%aresp%)=(*) then setequal(k=Y) if (%aresp%)=(~) then setequal(k=Y) if (%aresp%)=(`) then setequal(k=Y) get(&w,47,25) setequal(a=%ARESP%) setequal(b=%name%) upcase(b) ;find(&a,%var%b) ;if (%ARESP%)=(0) then goto(wrongp) get(&w,22,25) setequal(a=%aresp%) get(&w,47,25) setnv(msgfrom=%aresp%) get(&w,72,25) setequal(b=%aresp%) rtrim(b) get(&w,109,8) setequal(y=%aresp%) get(&w,124,2) cvi(%aresp%) if (%NV%A%)<>(%ARESP%) then setequal(/nva=%aresp%) selarea(%aresp%) enufsec(%areasec%) ifnottrue(goto(wrongp)) endif get(&w,117,6) setequal(q=%aresp%) addvar(%var%q+-1=q) setequal(h=0) setequal(u=0) setequal(t=1) *bh setequal(p=0) fread(%PBTEMP%qwkwork\%NV%ID%.msg,%var%x,128,v) if (%resp%)=(Q) then goto (doret) addvar(%var%x+128=x) *gv find(&v,π) setequal(e=%aresp%) if (%aresp%)>(0) then setequal(p=-1) if (%ARESP%)=(0) then setequal(h=0) goto (addmore) endif if (%var%h)>(0) then goto(addmore) *newline setequal(h=0) addvar(%var%e+-1=e) get(&v,1,%var%e) if (%var%t)<(198) then entertxt(%var%t,%aresp%) if (%var%t)=(198) then zap(%pbtemp%qwkwork\extra.txt,%aresp%) if (%var%t)=(198) then entertxt(%var%t, [ Continued in next message ]) if (%var%t)>(198) then if (%var%t)<(396) then appendto(%pbtemp%qwkwork\extra.txt,%aresp%) if (%var%t)=(396) then appendto(%pbtemp%qwkwork\extra.txt, [ Continued in attachment ]) if (%var%t)=(396) then zap(%pbtemp%qwkwork\excess.txt,%aresp%) if (%var%t)>(396) then appendto(%pbtemp%qwkwork\excess.txt,%aresp%) inc(t) addvar(%var%e+2=e) get(&v,%var%e,128) setequal(v=%aresp%) goto (gv) *nblock inc(u) if(&u)<(&q) then goto(bh) addvar(%var%t+-1=t) setmax(%var%t) if (%var%t)>(197) then setmax(198) rtrim(a) ;qseek(%var%a) seekuser(%var%a) ;setequal(c=%aresp%) setequal(c=%ndnumb%) setequal(t=%MSGNET%) inc(m) mod(%var%m,5) if (%aresp%)=(0) then say(%var%m*) len(%var%m) back(%aresp%) endif if (%var%b)=(DROP) then goto (drop) if (%var%b)=(RESET) then goto (reset) get(&b,1,3) if (%aresp%)=(ADD) then goto (add) *DoWrite setnv(b2=%var%b) seek(%pbtemp%qwkwork\extra.txt) iftrue(setnv(b2=%var%b 1/2)) writemsg(%nv%a%,%var%a,%NV%MSGFROM%,%nv%b2%,%var%c,%var%k,%var%y,%var%t,) inittxt seek(%pbtemp%qwkwork\extra.txt) ifnottrue(goto(st)) import(%pbtemp%qwkwork\extra.txt,,1,200) setnv(a2=%var%a) setnv(b2=%var%b) setnv(c2=%var%c) setnv(attfname=excess.txt) setequal(a=-1) do inc(a) seek(%attpat%excess.%var%a) iftrue(loop) setnv(attext=%var%A) seek(%pbtemp%qwkwork\excess.txt) ifnottrue(goto(writem1)) fcopy(%pbtemp%qwkwork\excess.txt,%attpat%excess.%var%a) goto(writem2) *writem1 setnv(attfname=) setnv(attext=) *writem2 writemsg(%nv%a%,%nv%a2%,%nv%msgfrom%,%nv%b2% 2/2,%nv%c2%,%var%k,%var%y,%var%t,%nv%attfname%,%nv%attext%) inittxt ;If (&z)=(15) Then writemsg(/:LASTMSG/,%nv%addressee%,%nv%addresser%,%nv%subject%,%nv%tousernum%,%nv%msgpvt%,%nv%orignum%,%nv%net%,%NV%ATTFNAME%,%NV%ATTEXT%) goto(st) *addmore inc(h) if (%var%h)>(2) then setequal(h=0) goto(newline) endif if (%var%h)>(1) then addvar(%var%t+-1=t) ;if (%var%u)=(%var%q) then if (%var%p)=(0) then rtrim(v) if (%var%h)<(2) then setequal(r=%var%v) if (%var%h)>(1) then addvar(%var%e+-1=e) get(&v,1,%var%e) setequal(r=%aresp%) endif showline(%var%t) entertxt(%var%t,%aresp%%var%r) inc(t) if (%var%h)>(1) then addvar(%var%e+2=e) get(&v,%var%e,128) setequal(v=%aresp%) goto(gv) endif goto(nblock) *done say(Done!&CR&) *gb setequal(/nva=) setequal(/nvid=) setequal(/nvlocaldir=) kill(%PBTEMP%qwkwork\*.*) selarea(/:lastmsg/) goto (doret) *wrongp say(&12&&CR&&CR&Error -- This packet is not a reply packet for this BBS.&CR&) secpause(2) goto(gb) *add len(%var%b) if (%aresp%)=(3) then goto (addproc) get(&b,5,100) number(%aresp%) ifnottrue(goto(doWrite)) sethigh(%aresp%) *AddProc selectconf(%usern%,Y) inittxt goto(st) *drop selectconf(%usern%,N) inittxt goto(st) *reset selectconf(%usern%,Y) himsg sethigh(%aresp%) inittxt goto(st) *doret if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return UNKILLCTL■SetEqual(/nvme=%VAR%Y) SetEqual(y=%MSGNUMBER%) setequal(g=1) enufsec(100) iftrue(goto (stkill)) setequal(a=%NAME%) upcase(a) setequal(i=%MSGFROM%) upcase(i) setequal(j=%MSGTO%) upcase(j) notif (&i)=(&a) then notif (&j)=(&a) then setequal(g=0) if (%MSGNAMEC%)=(Yes) then setequal(g=0) if (&g)=(0) then goto(restandret) *stkill msgunkill (/:LASTMSG/,%var%y) say(&12&&CR&Message #%var%y has been undeleted!&CR&) *restandret SetEqual(y=%NV%ME%) SetEqual(/nvme=) SetEqual(i=%NV%I%) return EXE2CTL╤ enufsec(50) ifnottrue(return) get (/:memo/,2,1) setequal(a=%ARESP%) len(/:memo3/) notif (%aresp%)=(0) then setequal(a=/:memo3/) say(Moving .EXE file ...*) fcopy(\pbcopy\temp3\pb%VAR%A.EXE,\pbcopy\temp\temp\temp\pboard.exe) notif (%ARESP%)=(0) then return say( Done!&CR&Adding your serial number ...*) get (/:memo/,3,10) setequal(b=%ARESP%) exec(\serial\serial.exe %VAR%A \pbcopy\temp\temp\temp\pboard.exe #%VAR%B /125A) ;say( Done!&CR&Adding .EXE to batch (may take a while) ...*) ;exec(\pbcopy\pc.exe \pbcopy\temp\temp\BBS2 \PBCOPY\temp\temp\temp\) ;say( Done!&CR&Compressing batch ...*) ;exec(\DOS\LHA.EXE U \PBCOPY\TEMP\MAIN2.LZH \PBCOPY\TEMP\TEMP\BBS2) say( Done!&CR&Zipping file ...*) exec(\DOS\PKZIP.EXE -eX \PBCOPY\EXE-%NODE%.ZIP \PBCOPY\TEMP\TEMP\TEMP\PBOARD.EXE) say( Done!&CR&Sending EXE-%NODE%.ZIP via ZMODEM ...) say() exec(\BBS\DSZ.COM port %PORT% speed %LBAUD% sz -m \PBCOPY\EXE-%NODE%.ZIP) log(--,Downloaded PB EXE file) return CHGZCTL┬;chg.ctl - control file used for changing the current conference ; ;modified 1/23/95 to automatically change the the conference number ;previously stored in %VAR%Z *sela CmpValO(%MAXAREA%,%VAR%Z) ;cmpvalo will report no if it's under 1. IfTrue (Return) SelArea(%VAR%Z) EnufSec(%AREASEC%) IfTrue(Goto (cnt)) SelArea(/:LASTMSG/) Say(&CR&&14&Your security level isn't sufficient to access the conference you want.&CR&) enter Return *cnt Display(areas\welc%VAR%Z) ListFile(areas\farea%VAR%Z) if (%FAREA%)=(AREAS\FAREA%VAR%Z) then goto (fsetup) goto (seled) *fsetup selfarea(1) setequal(/lastdown=1) *seled Say(Area #%VAR%Z:&15& %AREANAME%&11& is now selected!&CR&&7&) if (%AREAPVT%)=(Y) then say(Private mail is allowed in this area.) if (%AREAPVT%)=(N) then say(No private mail is allowed in this area.) if (%AREAFPUB%)=(Y) then say(All messages are forced public.) if (%AREAFPVT%)=(Y) then say(All messages are forced private.) if (%MSGNET%)=(Y) then say(Netmail is supported in this area.) if (%MSGFNET%)=(Y) then say(All mail in this area is Netmail.) linefeed(1) enter SetEqual(/LASTMSG=%VAR%Z) seek(areas\news/:lastmsg/.asc) iftrue(loadmem(control\macros\cnfnews.ctl)) Return LTAGGEDCTLSeek(%pbtemp%tagged.%NODE%) IfNotTrue (Goto (none)) if (%graphics%)=(RIP) then clearscr Say(&CR&&15&Files currently tagged:&CR&) Lview(%pbtemp%tagged.%NODE%,10,7) linefeed(1) Enter Return *none Say(&CR&&11&No files are tagged at this time.&CR&) enter Return UUCPCTLⁿcapture(tmpm.%node%) zap(tmpm2.%node%,TO:1:1/31) appendto(tmpm2.%node%,To:%nv%inetaddr%) appendto(tmpm2.%node%,) inittxt exec(copy tmpm2.%node%+tmpm.%node% tmpm3.%node%,) import(tmpm3.%node%,,1,100) lines(tmpm3.%node%) setmax(%aresp%) return NOTFCTLª eline(70) SetEqual(c=0) Say(Their name couldn't be found. ) Say( &3&Would you like to send the message anyway? &9&[ ]&14&*) Back(4) YesNoAsk(*) return NEWSUBCTL Say(&CR&&3& What is this message about?&12&:&11&( )&15&*) Back(21) SetFill(%var%b) cAsk(%LEN%20%*) killperc SetEqual(b=%RESP%) setequal(z=%var%b) upcase(b) find(%var%b,SYSP) iftrue(setequal(z=)) setequal(b=%var%z) return UPNEWSCTL┌*Update Say(&CR&&14&Updating Newsletter...) Kill(%NV%NEWS%.OLD) Rename(%NV%NEWS%.%NV%NEWSEXT%,%NV%NEWS%.OLD) ; backup old news.txt file SetEqual(a=1) SetEqual(b=0) *LoopMe Seek(%nv%newstemp%NEWS%VAR%A.%VAR%B) If(%ARESP%)=(No) then If(%VAR%B)=(0) then Goto(ThatsIt) IfTrue(Goto(AddIt)) Inc(a) SetEqual(b=0) Goto(LoopMe) *AddIt Lines(%nv%newstemp%HDR%VAR%A.%VAR%B) If(%ARESP%)<(2) then Goto(GoForIt) ; if article was killed, skip it AppendTo(%NV%NEWS%.%NV%NEWSEXT%,/-) Inpopen(%nv%newstemp%HDR%VAR%A.%VAR%B) ; the header file must contain 2 lines InpRead AppendTo(%NV%NEWS%.%NV%NEWSEXT%,%ARESP%) InpRead AppendTo(%NV%NEWS%.%NV%NEWSEXT%,%ARESP%) InpClose Inpopen(%nv%newstemp%NEWS%VAR%A.%VAR%B) DO Inpread AppendTo(%NV%NEWS%.%NV%NEWSEXT%,%ARESP%) EOFLOOP AppendTo(%NV%NEWS%.%NV%NEWSEXT%,/*) AppendTo(%NV%NEWS%.%NV%NEWSEXT%,) InpClose *GoForIt Kill(%nv%newstemp%HDR%VAR%A.%VAR%B) Kill(%nv%newstemp%NEWS%VAR%A.%VAR%B) Inc(b) Goto(LoopMe) *ThatsIt Exec(PBNEWS.EXE MAIN.CNF) if (%aresp%)<>(0) then goto (error) Say(&CR&&14&Newsletter Updated!) SetNv(Newsmade=Yes) SetEqual(a=1) SetEqual(b=0) Return *error say(&CR&&12&ERROR updating newsletter - &7&could not execute PBNEWS.EXE.) return SHELLCTLtloadsub(control\exitwip.ctl) ;procedure called for shelling to dos from remote. clearscr If (%LOCAL%)=(TRUE) then goto (locshell) Exec (dos %PORT%) goto (doret0) *locshell Log(--,%NAME% Shelled to DOS) Exec (command.com) *DoRet0 if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return ;---------------------------------------------------------------------------- if (%nv%wipmode%)=(1) then loadsub(control\exitwip.ctl) yesnoask (Shell to DOS?) if (%resp%)=(No) then goto (mainm) ;if (%NODE%)=(2) then goto (nosh0) mcavail(N) clearscr If (%LOCAL%)=(TRUE) then goto (locshell) ; get(%LBAUD%,1,2) ; Exec (command.com /c dos %PORT% %BAUD% %ARESP%) ;mcavail(/:defavail/) setequal(/resp=S) Log(--,Executing Door #%RESP%) FixFile (door.bt,door.bat) setequal (a=/:DOORS/) inc(a) setequal(/DOORSE=%VAR%A) Say(&14&&CR&Please wait, shelling to DOS . . .*) mcavail(N) zap(%pbtemp%tagtmp.%node%,%nv%totalTime%) appendto(%pbtemp%tagtmp.%node%,%nv%totalfree%) Exit (80,DOORS|) *locshell Log(--,%NAME% Shelled to DOS) Exec (command.com) mcavail(/:defavail/) goto (ret0) *nosh0 say(you can't shell from this node) enter goto (ret0) *ret0 if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return *mainm if (%nv%wipe%)=() then loadmem(control\main.mnu) setnv(wipe=) setnv(wipmode=1) loadmem(control\main.mnu) MAINCNFCTL;MAINCNF.CTL ;Creates MAIN.CNF configuration file for PB NEWS Zap(MAIN.CNF,%BBS%) ; BBS Name AppendTo(MAIN.CNF,%SYSOP%) ; Sysop's Name AppendTo(MAIN.CNF,%AREANAME%) ; Conference Name AppendTo(MAIN.CNF,DISPLAY\NEWSLTR.ASC) ; ASCII display AppendTo(MAIN.CNF,DISPLAY\NEWSLTR.ANS) ; ANSI display AppendTo(MAIN.CNF,%NV%NEWS%.%NV%NEWSEXT%) ; NEWS.TXT filename AppendTo(MAIN.CNF,4) ; style number Return TAGLISTCTL╒seek(%pbtemp%tagged.%node%) ifnottrue(goto(none)) setnv(r3=%var%r) inpopen(%pbtemp%tagged.%node%) say(&CR&&10& ----- Files Currently Tagged -----------&CR&) say(&11 FILENAME BYTES TRANSFER TIME) setequal(d=0) setequal(m=0) setequal(e=0) setequal(f=0) setequal(r=5) do inc(d) inpread setequal(w=%aresp%) cmpval(9,%var%d) say(&10&*) ifnottrue(say(0*)) say(%var%d: &7&%var%w*) len(%var%w) addvar(12+-%aresp%=a) get( ,1,%var%a) say(%aresp%*) inpline(%pbtemp%tagged2.%node%,%var%d) setequal(w=%aresp%) size(%var%w) addvar(%var%e+%aresp%=e) setequal(c=%aresp%) say( %aresp%*) len(%aresp%) addvar(7+-%aresp%=a) get( ,1,%var%a) say(%aresp% *) ttime(%var%c) say(%aresp% ) inpLine(%pbtemp%free.%node%,%var%d) addvar(%var%f+%ttim%=f) ifnottrue(addvar(%var%m+%ttim%=m)) inc(r) if (%var%r)>(/:screenlen/) then setequal(r=0) pauseprompt if (%aresp%)=(STOP) then goto (doret1) endif eofloop inpclose cnvtk(%var%e) say(&CR&&3& TOTAL %aresp% kbytes %var%f minutes) *doret1 setequal(r=%nv%r3%) setnv(r3=0) return *none say(&CR&&3& No files currently tagged.&CR&) return TRYHIGHCTLk say(try nuiq high...) ask(enter high msg # for this conf.) sethigh(%resp%) say(done!) enter return MARKMESSCTL┴setequal(a=0) if (%nv%marked%)=() then setequal(/nvmarked=0) if (0)=(%nv%marked%) then goto (stm) setequal(g=0) *m1 inc(g) setequal(a=nv%m%var%g%) prc(%%VAR%A) setequal(a=%ARESP%) if (&a)=(&y) then return if (&g)=(%nv%marked%) then goto (stm) goto (m1) *stm addvar(%nv%marked%+1=g) setequal(/nvmarked=%var%g) say(&CR&&14&Message &7&%var%y &14&has been marked for later retrival.&CR&) setequal(/nvm%NV%MARKED%=%var%y) enter return JUSTIFYCTLf;JUSTIFY.CTL ;justifies current NEWS article to PB NEWS limits ; * Line limit for newsletter article in PB NEWS is 69 characters. Inpopen(%nv%newstemp%NEWS%VAR%A.%VAR%B) SetNv(buffer=) DO Inpread SetEqual(c=%ARESP%) SetEqual(d=%NV%BUFFER%) ; must store in a-z var in case there are commas If(&d)<>() then Rtrim(d) ; trims trailing spaces off of buffer Get(&c,1,1) If(%ARESP%)=( ) then SetEqual(c=%VAR%D%VAR%C) If(%ARESP%)<>( ) then SetEqual(c=%VAR%D %VAR%C) endif If(&d)=() then SetEqual(c=%ARESP%) SetNv(buffer=) Len(%VAR%C) SetEqual(d=%ARESP%) If(&d)<(70) then Goto(WriteIt) Get(&c,%VAR%D,1) *TrimIt SetNv(buffer=%ARESP%%NV%BUFFER%) AddVar(%VAR%D+-1=d) Get(&c,1,%VAR%D) SetEqual(c=%ARESP%) Len(%VAR%C) SetEqual(d=%ARESP%) Get(&c,%VAR%D,1) If(%ARESP%)<>( ) then If(%ARESP%)<>() then Goto(TrimIt) If(&d)>(69) then Goto(TrimIt) *WriteIt AppendTo(%nv%newstemp%TEMP%VAR%A.%VAR%B,%VAR%C) EOFLOOP InpClose Kill(%nv%newstemp%NEWS%VAR%A.%VAR%B) Rename(%nv%newstemp%TEMP%VAR%A.%VAR%B,%nv%newstemp%NEWS%VAR%A.%VAR%B) Return SHOWMWIPCTLö&setnv(wipfS=) *AGMail getmail(%var%i,,%var%w) jump (setk) ; MSGSETBIT(%var%i,10,0) setequal(s=0) if (%MsgNumber%)=(0) then goto (next) setequal(z=10) ;notif (%ARESP%)=(Yes) then notif(%ARESP%)=(DELETED) then goto (nope) *banyway if (%nv%wipmode%)<>(1) then setnv(wipmode=1) setnv(wipfS=) endif clearscr if (%nv%wipfs%)<>() then goto (passShow) setnv(NoInfo=1) if (%sec%)<(100) then loadsub(control\ewipscr.ctl,setnv(wipf=inmsg)) if (%SEC%)=>(100) then loadsub(control\ewipscr.ctl,setnv(wipf=inmsg-s)) arrayread(%pbtemp%msgstmp.%node%) setnv(wipfS=1) *passShow setequal(x=0) setequal(s=0) setequal(c=07~msgnumber~%msgnumber%~) jump (wipc) setequal(f=%nv%f01%) write(Message # %msgnumber% of %var%f sent on ) setequal(c=07~varf~%var%f~) jump (wipc) nicedate(%MSGSNTD%) write(%aresp% at ) setequal(c=07~sentd~%aresp%~) jump (wipc) nicetime(%MSGSNTT%) writeln(%aresp%) setequal(c=07~sentt~%aresp%~) jump (wipc) niceequal(b=%msgfrom%) writeln(Sent by: %var%b) setequal(c=07~sentb~%var%b~) jump (wipc) niceequal(b=%msgto%) writeln(Addressed to: %var%b) setequal(c=07~addrto~%var%b~) jump (wipc) writeln(Regarding: %msgdesc%) setequal(c=07~regarding~%msgdesc%~) jump (wipc) niceequal(b=%msgpvt%, %msgrcvd%, Read %msgrdtimes% times, %replies%) If(%NV%KILLED%)=(YES) then setequal(b=%var%b, DELETED) writeln(Status: %var%b) setequal(c=07~status~%var%b~) jump (wipc) setequal(b=None) setnv(attf=) if (%MSGATTACH%)=(Y) then setnv(attf=1) setequal(b=) if (%MSGPVT%)=(PRIVATE) then setequal(s=10) setequal(b=* File Attached: %MSGATTNAME% ) If(%STOREDEXT%)=() then size(%ATTPAT%%ATTN0%.%ATTEXT%) NotIf(%STOREDEXT%)=() then size(%ATTPAT%%ATTN0%.%STOREDEXT%) setequal(b=%var%b%ARESP% bytes -- Time to download: ) TTime(%ARESP%) setequal(b=%var%b%ARESP%) endif setequal(c=07~attachinfo~%var%b~) jump (wipc) if (%nv%attf%)=(1) then jump (attbutton) if (%nv%attf%)=() then jump (attbclear) if (%nv%killed%)=(YES) then jump (unsetkbutton) if (%nv%killed%)<>(YES) then jump (setkbutton) setequal(c=14~msgtxt~200~12~) jump (wipc) writeln(Text of Message Follows: ------------------------------------------------) setnv(maxl=0) *dotext setequal(y=%nv%maxl%) setequal(f=0) *stl1 inc(y) inc(f) showline(%var%y) writeln(%aresp%) if (%aresp%)<>() then setequal(c=07~msgtxt~%aresp%~) if (%aresp%)=() then setequal(c=07~msgtxt~ ~) jump (wipc) if (%var%f)<(13) then if (%var%y)<(%maxline%) then goto (stl1) writeln (Message Reading Options:) writeln ( (N)ext, (P)revious, (R)eply, (F)orward, (KE)ep, (C)ompose, (D)ownload Attach) writeln ( 'UserFile' = Edit User Record, (H)elp, (Q)uit) writeln () setnv(maxl=%var%y) setequal(c=07~msgtxt~-1~) jump (wipc) setequal(c=0F~msgtxt~In-Box Message~1~1~2~) jump (wipc) setequal(c=0F~RecCount~20~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) *prompt0 setequal(c=0A~) jump (wipc) setequal(y=10) jump (wipask) if (%aresp%)<>(24) then goto (gotaresp) setequal(c=0A~) jump (wipc) setequal(y=20) jump (wipc) if (%aresp%)<>(24) then goto (gotaresp) setequal(c=0A~) jump (wipc) setequal(y=155) jump (wipask) if (%aresp%)=(24) then loadmem(control\timeout.ctl) *gotaresp bigif (ke:flagasnew,f:forw,r:reply,p:previous,k:kill,n:next,h:help2,q:inbox) bigif (c:compose,d:downatt) ;userfile:userrec notif(%NV%KILLED%)=(YES) then bigif (keep:flagasnew,forward:forw,reply:reply,prev:previous,kill:kill,next:next,help:help2,Exit:inbox,compose:compose) if(%NV%KILLED%)=(YES) then bigif (keep:flagasnew,forward:forw,reply:reply,prev:previous,kill:unkill,next:next,help:help2,Exit:inbox,compose:compose) if (%nv%attf%)=(1) then bigif (Download:downatt) if (%sec%)=>(100) then bigif(UserFile:userrec) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (notlistbox) addvar(%aresp%+1=c) get(&b,%var%c,1000) if (%aresp%)<>(-1) then goto (prompt0) if (%nv%maxl%)=>(%maxline%) then goto (endm) goto(dotext) *notlistbox *reading goto (prompt0) *flagasnew MsgSetBit(%MSGNUMBER%,10,0) Goto(inbox) *mark loadsub(control\macros\markmess.ctl) SetEqual(/nvstatus=REPEAT) *help2 findfirst(display\help\readn*.wip) if (%aresp%)=(0) then goto (nowiphelp) if (%aresp%)=() then goto (nowiphelp) display(display\help\readn,/:SEC/) goto (prompt0) *nowiphelp loadsub(control\exitwip.ctl) display(display\help\readn,/:sec/) goto(prompt0) *downatt zap(%pbtemp%varr.%NODE%,%var%R) linefeed(1) loadsub(control\exitwip.ctl) LoadSub(control\macros\savevars.ctl) loadsub(control\DOWNATT.CTL) Loadsub(control\macros\restvars.ctl) goto (aGMail) *forw loadsub(control\macros\messforw.ctl) if (&g)=(1) then goto (inv2) ;goto (repeat) Goto(agmail) *marked ; appears to be a useless label setequal(w=1) setequal(/nvreadtype=1) setequal(u=0) goto (next) *userrec EnufSec(100) IfNotTrue(Goto(inv2)) loadsub(control\macros\userrwip.ctl) Goto(AGMAil) *rev if (&y)=(0) then goto (inv2) setequal(f=%nv%f01%) setequal(y=%var%f) setequal(w=-1) if (&y)=(0) then goto (inv2) goto (repeat) *Qdisp SetEqual(/nvstatus=INBOX) Return *Inv2 ;SetEquaL(/NVSTATUS=INV2) ;Return if (&s)=(10) then goto (abb) say(&CR&&CR&&12&Invalid selection! Please try again...&CR&) secpause(1) flushout Goto(Reading) *kill SetEqual(/nvme=%VAR%Y) SetEqual(y=%MSGNUMBER%) loadsub(control\macros\killmess.ctl) SetEqual(y=%NV%ME%) SetEqual(/nvme=) SetEqual(i=%NV%I%) ;NotIf(&g)=(0) then SetEqual(^%VAR%i=DELETED) Goto(Inbox) *Unkill LoadSub(Control\macros\unkill.ctl) Goto(inbox) *Inbox SetEqual(/nvstatus=INBOX) Return *next SetEqual(i=%NV%I%) Inc(i) If(&i)>(%NV%TOTMAX%) then Goto(lastmsg) SetEqual(/nvselected=%VAR%I) SetEqual(/nvi=%VAR%I) Goto(MovingDown) ;Goto(SetVars) *previous SetEqual(i=%NV%I%) ;Say(BEFORE I=%VAR%I) AddVar(%VAR%I+-1=i) ;Say(AFTER I=%VAR%I) If(&i)<(1) then Goto(firstmsg) SetEqual(/nvselected=%VAR%I) SetEqual(/nvi=%VAR%I) Goto(MovingUp) *SetVars ;Say(BEFORE I=%VAR%I) SetEqual(i=^:I^) ;Say(AFTER I=%VAR%I) ;Say(:1=^:1^ :2=^:2^) getmail(%var%i,,%var%w) ;Say(ARESP from the GetMail(%VAR%I,,%VAR%W)=%ARESP%) ;Enter Say($0$*) Goto(AgMail) *getHiLow himsg setequal(f=%ARESP%) setnv(f01=%aresp%) lowmsg setequal(n=%ARESP%) setnv(n=%aresp%) ret *firstmsg Say(&CR&&12&This is the first message in your INBOX&CR&) SecPause(1) Inc(i) ;SetEqual(i=%NV%I%) SetEqual(/nvselected=%VAR%I) SetEqual(/nvstart=%VAR%I) SetEqual(/nvi=%VAR%I) SetEqual(i=^:I^) Goto(Inbox) ;Goto(SetVars) *lastmsg Say(&CR&&12&This is the last message in your INBOX&CR&) SecPause(1) AddVar(%VAR%I+-1=i) SetEqual(/nvselected=%VAR%I) SetEqual(/nvi=%VAR%I) SetEqual(i=^:I^) Goto(Inbox) ;Goto(SetVars) *MovingUp SetEqual(/nvtemp=%NV%SELECTED%) NotIf(%NV%SELECTED%)>=(%NV%START%) then Goto(QuickFix) ; SetEqual(i=%NV%SELECTED%) ; AddVar(%VAR%I+-1=i) SetEqual(/nvselected=%VAR%I) SetEqual(/nvscreen=REFRESH) SetEqual(i=%NV%SELECTED%) AddVar(%VAR%I+3=q) setequal(y=^:I^) Goto(SetVars) *QuickFix ;AddVar(%NV%START%+-1=i) If(&i)<(1) then SetEqual(i=%NV%TOTMAX%) SetEqual(/nvselected=%VAR%I) Inc(i) AddVar(%VAR%I+-%NV%SCREENLEN%=i) Inc(i) SetEqual(/nvstart=%VAR%I) SetEqual(/nvscreen=NORMAL) Goto(SetVars) endif SetEqual(/nvstart=%VAR%I) SetEqual(/nvscreen=NORMAL) SetEqual(/nvselected=%VAR%I) Goto(SetVars) *MovingDown SetEqual(/nvtemp=%NV%SELECTED%) ;SetEqual(i=%NV%SELECTED%) NotIf(&i)<=(%NV%MAX%) then SetEqual(/nvselected=%VAR%I) AddVar(%VAR%I+-%NV%SCREENLEN%=i) Inc(i) Inc(i) SetEqual(/nvstart=%VAR%I) SetEqual(i=%NV%SELECTED%) Goto(SetVars) Endif SetEqual(/nvselected=%VAR%I) SetEqual(/nvscreen=REFRESH) SetEqual(i=%NV%SELECTED%) AddVar(%VAR%I+3=q) setequal(y=^:I^) Goto(SetVars) *reply ;SetEqual(/nvnum=%VAR%I) loadsub(control\exitwip.ctl) loadsub(control\macros\reply.ctl) ;SetEqual(i=%NV%NUM%) SetEqual(i=%NV%SELECTED%) ;Say(i=%VAR%I) setnv(wipfs=) SetEqual(/nvnum=) goto (setvars) *compose LoadSub(control\macros\savevars.ctl) loadsub(control\exitwip.ctl) Loadsub(control\macros\enter.ctl) LoadSub(control\macros\restvars.ctl) setnv(wipfs=) Goto (agmail) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(45) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) RET *NOC0 log(<<,Carrier lost.) quitbbs *attbutton setequal(c=07~Download~Download %MSGATTNAME%~) goto (wipc) *attbclear setequal(c=15~Download~) goto (wipc) *setkbutton setequal(c=07~kill~Kill~) goto (wipc) *unsetkbutton setequal(c=07~kill~UnKill~) goto (wipc) *setk SetEqual(/nvkilled=NO) if(%ARESP%)=(DELETED) then SetEqual(/nvkilled=YES) ret *endm setequal(c=13~There is no more message text.~No More Text~1~) jump (okbox0) setequal(c=0A~) jump (wipc) goto (prompt0) *wipAsk loadsub(control\wipask.ctl) ret *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret REPLYCTLûfreespace(%CDRIVE%:) if (%ARESP%)<(%MINSPACE%) then loadmem (control\macros\nospace.ctl) SetEqual(/nvccs=0) setequal(k=0) setequal(/nvMsgPvt=N) If (%AREAFPVT%)=(Y) then setequal(/nvMsgPvt=Y) capture(%pbtemp%quote.%NODE%) inittxt setequal(a=%MSGFROM%) SetEqual(/nvaddressee=%MSGFROM%) setequal(b=%MSGDESC%) SetEqual(/nvsubject=%MSGDESC%) SetEqual(/nvorignum=%MSGNUMBER%) ; msg # of message you are replying to SetEqual(/nvaddresser=%NAME%) fcomma(b) fcomma(a) setequal(z=15) seekuser(%var%a) setequal(c=%NDNUMB%) SetEqual(/nvtousernum=%NDNUMB%) IfNotTrue (setequal(c=0)) SetEqual(/nvMsgPvt=No) ; default to No ;if (%AREAPVT%)=(N) then goto (stenter1) ;if (%AREAFPVT%)=(Y) then goto (stenter1) ;say(&15&Would you like to make this a private message? (&12&Y&15&/&12&N&15&)&14&*) ;back(4) ;yesnoask(*) ;setequal(/nvMsgPvt=%RESP%) *stenter1 Spause(0) loadmem(control\macros\menter.ctl) UPTEXTCTL¼ Say(&14&Calculating free storage space...*) ClearMem FreeSpace(%CDRIVE%:) setequal(l=%aresp%) CmpVal(%ARESP%,%MINSPACE%) IfTrue (Goto (notenufs)) eline(38) *pickprot if (%baud%)=(LOCAL) then goto (pok) display(display\utprot) MenuAsk (&15&Which transfer protocol would you like to use?&12&: &14&*) If (%RESP%)=(Q) Then Return Len(%RESP%) NotIf (%ARESP%)=(1) Then Goto (Pprob) Seek(protocol\%RESP%-AT.BT) IfTrue (Goto (Pok)) *pprob loadsub(control\macros\badsel.ctl) Goto (pickprot) *Pok addcomma(%var%l) Say(&CR&&11&%ARESP% &15&bytes free.) SetEqual(r=%RESP%) cMenuAsk (%CRON%&CR&&15&Please enter the name of the file to upload&12&:&14& *) If (%RESP%)=(<CR>) Then Return SetEqual(x=%RESP%) setequal(d=%resp%) If(%LOCAL%)=(TRUE) then Goto(ChkPath) Say(&CR&&11&We're ready to receive the file. Please start sending now.) FixFile(protocol\%var%r-at.bt,%PBTEMP%%var%r-at.bat) Exec(%PBTEMP%%var%r-at.BAT│) Goto (success) *ChkPath SetNv(fntemp=) *Chkpath1 Find(&x,:) If(%ARESP%)=(2) then Get(&x,1,2) SetNv(fntemp=%ARESP%) Len(%VAR%X) AddVar(%ARESP%+-2=o) Get(&x,3,%VAR%O) SetEqual(x=%ARESP%) endif *chkpath2 Find(&x,\) ; see if they put a path in with the filename SetEqual(o=%ARESP%) If(%ARESP%)<>(0) then Get(&x,1,%VAR%O) SetNv(fntemp=%NV%FNTEMP%%ARESP%) Len(%VAR%X) AddVar(%ARESP%+-o=p) Inc(o) Get(&x,%VAR%O,%VAR%P) SetEqual(x=%ARESP%) Goto(ChkPath2) ; checks for multiple backslashes endif If(%NV%FNTEMP%)<>() then Len(%NV%FNTEMP%) SetEqual(o=%ARESP%) Get(%NV%FNTEMP%,%ARESP%,1) If(%ARESP%)=(\) then Dec(o) Get(%NV%FNTEMP%,1,%VAR%O) SetNv(fntemp=%ARESP%) endif endif SetEqual(/RESP=%VAR%X) *locul If(%NV%FNTEMP%)<>() then SetEqual(/RESP=%NV%FNTEMP%) Goto(DoCopy) endif MenuAsk (&15&Please enter the path for this file&12&: &14&*) *DoCopy fCopy(%RESP%\%var%x,%PBTEMP%%var%x) notif (%ARESP%)=(0) then goto (pok) *success NotIf (%ARESP%)=(0) Then Goto (aborted) ;loadsub(zc\zc2.ctl) if (&y)=(2) then goto (aborted) Log(--,Msg Txt uploaded (%var%x)) Import (%pbtemp%%var%x,,1,100) kill(%pbtemp%%var%x) Say(&CR&&14&Upload text imported into current message!) return *notenufs display(display\nospce) Return *aborted SetEqual(x=) FlushOut Log(--,Msg Tx upload aborted (%var%x)) Display(display\attabt) Return *alreadyhere Display (display\HERENOW) Goto (pok) MESSFORWCTLWfreespace(%CDRIVE%:) if (%ARESP%)<(%MINSPACE%) then loadmem (control\macros\nospace.ctl) setequal(g=0) namequal(a=%MSGTO%) namequal(b=%NAME%) if (&a)=(&b) then goto (okf) namequal(a=%MSGFROM%) if (&a)=(&b) then goto (okf) EnufSec(100) IfTrue(goto(okf)) setequal(s=5) setequal(g=1) return *okf loadmem(control\macros\forw.ctl) KILLTEMPCTL *ClearAllVars SetNv(newsmade=) SetNv(olda=) SetNv(oldb=) SetNv(nva=) SetNv(nvb=) SetNv(yndef=) SetNv(news=) SetNv(newsext=) SetNv(ntstatus=) SetNv(date=) SetNv(title=) SetNv(add=) SetNv(articles=) SetEqual(a=1) SetEqual(b=0) *LoopMe Seek(%nv%newstemp%NEWS%VAR%A.%VAR%B) If(%ARESP%)=(No) then If(%VAR%B)=(0) then Goto(ThatsIt) IfTrue(Goto(AddIt)) Inc(a) SetEqual(b=0) Goto(LoopMe) *AddIt Kill(%nv%newstemp%HDR%VAR%A.%VAR%B) Kill(%nv%newstemp%NEWS%VAR%A.%VAR%B) Inc(b) Goto(LoopMe) *ThatsIt Return SPLITCTL setequal(b=0) setequal(a=0) ;SPLIT.CTL ;splits NEWS.TXT into separate files by article SetNv(news=NEWS) SetNv(newsext=TXT) Seek(MAIN.CNF) IfNotTrue(LoadSub(control\macros\maincnf.ctl)) Seek(%nv%news%.%nv%newsext%) IfNotTrue(Goto(NoNews)) SetEqual(a=1) Lines(NEWS.TXT) SetEqual(/nvlines=%ARESP%) ; keep track of lines SetEqual(e=0) ; e = current line of file Inpopen(NEWS.TXT) Say(&14&Reading News File...) *FindBegin Kill(%nv%newstemp%NEWS%VAR%A.0) ; data file for current newsletter article Kill(%nv%newstemp%HDR%VAR%A.0) ; header file for current newsletter article DO If(&e)>=(%NV%LINES%) then Goto(Fin) Inpread Inc(e) SetEqual(b=%ARESP%) Find(&b,/-) ; search for article top marker If(%ARESP%)<>(0) then Goto(Continue) EOFLOOP *Fin InpClose If(&a)=(1) then Goto(NoArts) errortrap Say(&CR&&4&-- No More Articles --) InpClose addvar(%var%a+-1=a) SetEqual(/nvarticles=%VAR%A) setnv(highart=%var%a) Return *Continue SetEqual(d=1) DO Inpread Inc(e) SetEqual(b=%ARESP%) Find(&b,/*) ; search for article end marker NotIf(%ARESP%)=(0) then Back(26) Say(--PARSED ARTICLE %VAR%A--*) Inc(a) ; a is number of articles Goto(FindBegin) endif If(%ARESP%)=(0) then If(&d)>(2) then AppendTo(%nv%newstemp%NEWS%VAR%A.0,%VAR%B) If(&d)<=(2) then AppendTo(%nv%newstemp%HDR%VAR%A.0,%VAR%B) endif Inc(d) EOFLOOP Say(&CR&&12&ERROR! Could not locate end of article!) SetEqual(/nvnews=) SecPause(2) Return *NoNews Say(&CR&&12&The Newsletter Data File (%nv%news%.%nv%newsext%) cannot be located!) Say(Creating New Article...) ;SetNv(news=) ;SecPause(1) Return *NoArts Say(&CR&&12&ERROR! There are no recognizable articles in %nv%news%.%nv%newsext%! Aborting...) SetNv(news=) SecPause(2) Return CCMSGSCTL *ccstuff If(%NV%CC1%)=() then Return SetEqual(q=1) ;kill(cc1.%node%) ;cc1.%node% already exists from the CC: at the bottom of the original msg ;capture(cc1.%NODE%) DO SetEqual(j=nv%ccnum%VAR%Q%) SetEqual(i=nv%cc%VAR%Q%) Prc(%%VAR%J) SetEqual(j=%ARESP%) Prc(%%VAR%I) SetEqual(i=%ARESP%) If(&i)=() then Goto(IncItAndGo) ;if blank, it has been deleted by the Edit CC List option SetEqual(/nvccing=1) SetEqual(/nvaddressee=%VAR%I) SetEqual(/nvskip=0) LoadSub(control\macros\CCLine.ctl) nicequal(a=%NV%ORIGADDR%) zap(%pbtemp%cc.%NODE%, [ CARBON COPY MESSAGE ]) appendto(%pbtemp%cc.%NODE%, ■ Original Message Addressed to %var%a) appendto(%pbtemp%cc.%NODE%,) loadexec(command.com,/c copy %pbtemp%cc.%NODE%+%pbtemp%cc1.%NODE%+%pbtemp%ccline1.%NODE% %pbtemp%cc.%NODE% >nul) inittxt Lines(%pbtemp%cc.%NODE%) import(%pbtemp%cc.%NODE%,,1,%ARESP%) ; used to be 1,100 ;NotIf(&z)=(15) then writemsg(/:LASTMSG/,%var%i,%NAME%,%var%b,%var%j,%var%k,0,%var%v,%var%x) ;If(&z)=(15) then writemsg(/:LASTMSG/,%var%i,%NAME%,%var%b,%var%j,%var%k,%var%y,%var%v,%var%x) NiceSay(&11& ■ &3&Sending Carbon Copy to %VAR%I) NotIf(&z)=(15) then writemsg(/:LASTMSG/,%var%i,%NV%ADDRESSER%,%nv%subject%,%var%j,%nv%msgpvt%,0,%var%v,%var%x) If(&z)=(15) then writemsg(/:LASTMSG/,%var%i,%NV%ADDRESSER%,%nv%subject%,%var%j,%nv%msgpvt%,%var%y,%var%v,%var%x) SetEqual(a=/:MSENT/) ; # of messages sent/entered Inc(a) ; increment # of messages sent in user record SetEqual(/MSENT=%VAR%A) *IncItAndGo Inc(q) If(&q)>(%NV%CCs%) then Return LOOP setequal(/nvccing=) SetEqual(/nvorigaddr=) SetEqual(/nvskip=) Enter Return ENTERCTLH&loadsub(control\exitwip.ctl) *enter SetNv(attfname=) freespace(%CDRIVE%:) if (%ARESP%)<(%MINSPACE%) then loadmem (control\macros\nospace.ctl) setequal(k=0) setequal(y=0) setequal(d=1) SetEqual(/nvcc1=) SetEqual(/nvccs=0) ;if %nv%cc1% is not blank, it contains the name of the first person to ;carbon copy the message to SetEqual(z=0) ;%var%z is the total number of people to cc the message to. If 0, then ;it will not be cced. SetEqual(/nvATTFNAME=) ; need to clear attach vars to prevent accidentally SetEqual(/nvattext=) ; attaching the same file to another message SetEqual(j=nv%ccnum%VAR%Z%) SetEqual(x=nv%cc%VAR%Z%) say(&15&) setactivity(Message Entry) inittxt *ps1 delimit( ,;) SetActivity (Message Entry) Seek(INTMSGS\%USERN%.HDR) ; look for interrupted message IfTrue(Goto(IntMsg)) *GoAhead ;---PowerStak Block 1 (with modifications) len(%nv%queue%) notif (%aresp%) = (0) then setequal(/resp=%nv%queue%) SetEqual(/nvqueue=) Notif(/:EXPERT/)=(Y) then Say (&CR&&15&To whom do you want to send this message?&12&: &14&*) if(/:EXPERT/)=(Y) then Say (&CR&&15& To&12&: &14&*) NiceSay(%RESP%*) Goto(stk) ; if all dequeued, continue on... endif ;---PowerStak Block 1 End--- (with modifications) Say(&14&Pressing [ENTER] skips the current question, if possible, or otherwise aborts.&15&) if (%AREAFPVT%)=(N) then say(&CR&&3&Enter '&11&ALL&3&' to send to everyone; *) if(%SEC%)=(100) then say() endif If (%SEC%)=(100) then Say(&CR&&3&Enter '&11&@NAME@&3&' to send this message to everyone as if individually sent.) Say(Enter '&11&@SEC@&14&x&11&@&3&' to send this message to all users with security '&14&x&3&'.) say(&3&Enter '&11&/FIND&3&' to search for a user on the BBS.) endif Notif(/:EXPERT/)=(Y) then cAsk (%NOCR%%CRON%&CR&&15&To whom do you want to send this message?&12&: &14&*) if(/:EXPERT/)=(Y) then cAsk (%NOCR%%CRON%&CR&&15& To&12&: &14&*) ;---PowerStak Block 2 *stk killperc Get(%RESP%,1,1) If(%ARESP%)=(/) then Jump(Anywhere) Goto(ps1) endif If(%ARESP%)=(?) then SetNv(Helpoption=66) Jump(OlHelp) Goto(ps1) endif Goto(Stk2) setequal(a=%resp%) DEQUEUE(a) setequal(/nvqueue=%var%a) setequal(/resp=%aresp%) ;---PowerStak Block 2 End--- *Stk2 MenuEqual(/RESP=%RESP%) SetEqual(/nvaddresser=/:name/) if (%msgaliases%)=(Y) then setequal(/nvaddresser=%name%) if (/:alias/)<>() then setequal(/nvaddresser=/:alias/) endif if (%RESP%)=(SYSOP) then jump (sysn) *bk1 if (%resp%)=(<CR>) then linefeed(1) if (%RESP%)=(<CR>) then goto (doret) ;Get(%RESP%,1,1) ;If(%ARESP%)=(/) then Goto(Anywhere) ;If(%ARESP%)=(?) then Goto(OlHelp) setequal(a=%RESP%) SetEqual(/nvaddressee=%RESP%) setequal(c=0) if (%RESP%)=(ALL) then if (%AREAFPVT%)=(N) then goto (back) if (%RESP%)=(ALL) then goto (nall) if (%RESP%)=(?) then goto (finduser) setequal(g=%NAME%) upcase(g) seekfile(bad.to,%VAR%G;%RESP%) iftrue(goto(doret)) If(%HANDLE%)=(Yes) then SeekType(a) If(%HANDLE%)=(No) then SeekType(n) seekuser(%RESP%) ;setequal(c=%NDNUMB%) setequal(/nvtousernum=%NDNUMB%) ifnottrue(goto (notfound)) ;SetNv(addressee=%NDNAME%) ; if aliases enabled, you will need real name *Back NotIf(/:EXPERT/)=(Y) then cAsk (%CRON%&CR&&15& What is this message about?&12&: &14&*) If(/:EXPERT/)=(Y) then cAsk (%CRON%&CR&&15&Regarding&12&: &14&*) killperc if (%RESP%)=(<CR>) then goto (doret) Get(%RESP%,1,1) If(%ARESP%)=(?) then SetNv(helpoption=67) Jump(Olhelp) Goto(Back) endif If(%ARESP%)=(/) then Jump(Anywhere) Goto(back) endif ;SetEqual(b=%RESP%) SetEqual(/nvsubject=%RESP%) Say() *back2 Setfill([ENTER] quits) NotIf(/:EXPERT/)=(Y) then CMenuAsk (%NOCR%%CRON%&15& Send a copy of this message to whom?&12&: &14&*) If(/:EXPERT/)=(Y) then CMenuAsk (%NOCR%%CRON%&15& CC&12&: &14&*) If(%RESP%)=([ENTER] QUITS) then Say( ) If(%RESP%)=([ENTER] QUITS) then Goto(StEnter) if (%RESP%)=(<CR>) then say() If(%RESP%)=(<CR>) then Goto(StEnter) Get(%RESP%,1,1) If(%ARESP%)=(?) then SetNv(HelpOption=124) Jump(olhelp) Goto(back2) endif If(%ARESP%)=(/) then Jump(Anywhere) Goto(back2) endif If(%RESP%)=(SYSOP) then Jump(SysN) Say() If(%RESP%)=(%NV%ADDRESSEE%) then Goto(AlreadyOnList) SetEqual(/nvcheck=%RESP%) Jump(CheckDup) SetEqual(/nvcheck=) killperc if (%RESP%)=(SYSOP) then jump (sysn) if (%resp%)=(<CR>) then linefeed(1) if (%RESP%)=(<CR>) then goto (doret) Inc(z) SetEqual(j=nv%ccnum%VAR%Z%) SetEqual(x=nv%cc%VAR%Z%) setequal(/nvcc%var%z=%RESP%) setequal(/nvccnum%var%z=0) if (%RESP%)=(ALL) then if (%AREAFPVT%)=(N) then goto (back) if (%RESP%)=(ALL) then goto (nall) if (%RESP%)=(?) then goto (finduser) SetEqual(/nvme=%VAR%B) SetEqual(b=%RESP%) ;Find(&b,,) ;**** SHOULD BE A COMMA INSTEAD OF SEMICOLON, BUT IT ISN'T WORKING YET ;NotIf(%ARESP%)=(0) then ; If(%RESP%)=(,) then Goto(StEnter) ;**** SHOULD BE A COMMA INSTEAD OF SEMICOLON, BUT IT ISN'T WORKING YET SetEqual(/nvccnum%var%z=-1) ; AddVar(%ARESP%+-1=w) ; Get(&b,1,%VAR%W) ;Get(%RESP%,1,%VAR%W) ; SetEqual(/nvcc%var%z=%ARESP%) SetEqual(/nvcc%var%z=%VAR%B) ; endif SetEqual(b=%NV%ME%) SetEqual(/nvme=) setequal(g=%NAME%) upcase(g) seekfile(bad.to,%VAR%G;%RESP%) iftrue(goto (doret)) Prc(%%VAR%J) ;NotIf(%NV%CCNUM%%VAR%Z%)=(-1) then Goto(NormFin) NotIf(%ARESP%)=(-1) then Goto(NormFin) Prc(%%VAR%X) ;seekuser(%NV%CC%%var%z%) SeekUser(%ARESP%) ifnottrue(goto (notfound2)) setequal(/nvccnum%var%z=%NDNUMB%) Goto(back2) *NormFin Prc(%%VAR%X) ;seekuser(%NV%CC%%var%z%) SeekUser(%ARESP%) ifnottrue(goto (notfound2)) setequal(/nvccnum%var%z=%NDNUMB%) *stenter if (%AREAPVT%)=(N) then goto (stenter1) if (%AREAFPVT%)=(Y) then goto (stenter1) setnv(msgpvt=N) if (%NV%ADDRESSEE%)=(ALL) then goto (stenter1) say(&15&Would you like to make this a private message? (&12&Y&15&/&12&N&15&)&14&*) back(4) yesnoask(*) setnv(msgpvt=%RESP%) ; Set Private Message Flag *stenter1 SetEqual(/nvccs=%VAR%Z) loadmem(control\macros\menter.ctl) *nall say(&CR&&CR&&12&Messages cannot be sent to "ALL" in a private mail area.&CR&) enter goto (doret) *notfound if (%SYSSEC%)=(%SEC%) then if (%RESP%)=(@NAME@) then goto (Back) Get(%RESP%,1,5) If(%ARESP%)=(@SEC@) then Goto(Back) endif if (%RESP%)=(@NAME@) then goto (doret) Get(%RESP%,1,5) if(%ARESP%)=(@SEC@) then goto (doret) If (%MSGFNET%)=(Y) then goto (back) ;don't bother confirming the name if the messages is being sent by NetMail. say(&CR&&14& That name could not be found. ) setequal(c=0) say( &15&Would you like to send the message anyway? (&12&Y&15&/&12&N&15&)&14&*) back(4) yesnoask(*) if (%RESP%)=(No) then goto (doret) goto (back) *notfound2 if (%RESP%)=(@NAME@) then goto (doret) If (%MSGFNET%)=(Y) then goto (back2) ;don't bother confirming the name if the messages is being sent by NetMail. say(&CR&&14& That name could not be found. ) setequal(c=0) say( &15&Would you like to send a carbon copy to this person anyway? (&12&Y&15&/&12&N&15&)&14&*) back(4) yesnoask(*) if (%RESP%)=(Yes) then setequal(/nvccnum%var%z=%NDNUMB%) goto(back2) endif AddVar(%VAR%Z+-1=z) Say(&12&&CR& The last carbon copy request has been cancelled.&CR&) goto (back2) *finduser Say() loadsub(control\macros\find.ctl) goto (Enter) *sysn len(%UARESP%) back(%ARESP%) setequal(/resp=%SYSOP%) say(%SYSOP%*) ret *alreadyonlist Say(&CR&&12&The last carbon copy request has been cancelled-- this message is already) Say(being sent to *) NiceSay(%RESP%.&CR&) ;SecPause(2) Goto(back2) *CheckDup If(&z)<(1) then Ret ;z is ccnums. if only 1 cc, there cannot be a duplicate SetEqual(/nvq=%VAR%Q) SetEqual(q=1) *Dup2 SetEqual(x=nv%cc%VAR%Q%) Prc(%%VAR%X) If(%ARESP%)=(%NV%CHECK%) then Goto(AlreadyOnList) Inc(q) If(&q)>(&z) then Ret Goto(Dup2) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Ret *OlHelp SetNv(AtPrompt=Yes) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Ret *IntMsg Say(&CR&&14&You recently lost carrier while entering a message. The interrupted message) Say(has been saved to disk. You may continue this message if you wish. If you do) Say(not continue it, it will not be erased. However, if you drop carrier while) Say(entering another message, you will lose the first interrupted message.) Say(&CR&&15&Do you wish to continue the interrupted message? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If(%RESP%)=(No) then Goto(GoAhead) SetNv(queue=) ; empty queue if continuing message Seek(INTMSGS\%USERN%.MES) IfNotTrue(Goto(IntProb)) Inpopen(INTMSGS\%USERN%.HDR) Inpread SetNv(addressee=%ARESP%) Inpread SetNv(tousernum=%ARESP%) Inpread SetNv(subject=%ARESP%) Inpread SetNv(addresser=%ARESP%) Inpread SetNv(msgpvt=%ARESP%) Inpread SetNv(orignum=%ARESP%) Inpread SetNv(net=%ARESP%) Inpread SelArea(%ARESP%) InpClose EnufSec(%AREASEC%) IfNotTrue(Goto(TooLow)) Import(INTMSGS\%USERN%.MES,,1,100) Kill(INTMSGS\%USERN%.HDR) Kill(INTMSGS\%USERN%.MES) Log(--,User continued interrupted message) LoadSub(control\macros\menter.ctl,Goto(Iadd)) goto (doret) *IntProb Say(&CR&&12&ERROR: The interrupted message was not properly stored on disk! It cannot be) Say(continued.&CR&) SecPause(2) Kill(INTMSGS\%USERN%.HDR) goto (doret) *TooLow Say(&CR&&12&Your security level is too low to send the interrupted message to the) Say(conference for which it was originally intended!) SelArea(/:LASTMSG/) SecPause(2) goto (doret) *doret if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return RESETCTL╫ *Reset setequal(>NAME=%var%D) setequal(>LAST=%DATE%) setequal(>LASTCHK=%DATE%) setequal(>FROM=) SetEqual(>STREET=) SetEqual(>PASS=) SetEqual(>PHONE=) SetEqual(>WORK=) SetEqual(>BIRTH=) SetEqual(\SEC=%NEWSEC%) ; set security level to new user security SetEqual(\PROTOCOL=N) SetEqual(>COMP=) SetEqual(>SCREENLEN=24) SetEqual(\DEFAVAIL=Y) SetEqual(\ALIAS=) SetEqual(\COUNTRY=) SetEqual(\COMPANY=) SetEqual(\TITLE=) SetEqual(\MHSNAME=) SetEqual(\STREET1=) SetEqual(\STREET=) SetEqual(\FROM=) SetEqual(\UPLOADS=0) SetEqual(\DOWNLOADS=0) SetEqual(\KDOWN=0) SetEqual(\KUP=0) SetEqual(\GRAPHICS=ASCII) SetEqual(\SCREENLEN=24) SetEqual(\CUTOFF=0) SetEqual(\CHATREQ=0) SetEqual(\MINSU=0) SetEqual(\BYTESTODAY=0) SetEqual(\LASTT=%TIME%) ; set last time on to current time SetEqual(\LASTDOWN=1) SetEqual(\LASTUP=1) SetEqual(\LASTMSG=1) SetEqual(\LEFT=%NEWTIME%) ; set time left to new user time limit SetEqual(\TIMESON=0) SetEqual(\FIRST=%DATE%) SetEqual(\DOORSE=0) SetEqual(\SUBBAL=0) SetEqual(\SUB=No) SetEqual(\TL=0) SetEqual(\FRATIO=0) SetEqual(\DAILYDL=0) SetEqual(\DAILYUL=0) SetEqual(\NBAL=0) SetEqual(\WAIT=No) SetEqual(\LO=No) SetEqual(\MSENT=0) SetEqual(\SUBDATE=%DATE%) ; date subscription expires SetEqual(\EXPTO=0) SetEqual(\EXPSEC=%NEWSEC%) SetEqual(\EXPERT=No) SetEqual(\PSYS=No) ; Sysop logon page SetEqual(\ITIME=No) ; no time limit SetEqual(\ANSMUSIC=No) SetEqual(\MEMO=) SetEqual(\MEMO2=) SetEqual(\MEMO3=) SetEqual(\MEMO4=) SetEqual(\MEMO5=) SetEqual(\MEMO6=) SetEqual(\INT1=0) SetEqual(\INT2=0) SetEqual(\INT3=0) SetEqual(\INT4=0) SetEqual(\INT5=0) SetEqual(\INT6=0) SetEqual(\CHR1=) SetEqual(\CHR2=) SetEqual(\CHR3=) SetEqual(\FLAG01=No) SetEqual(\FLAG02=No) SetEqual(\FLAG03=No) SetEqual(\FLAG04=No) SetEqual(\FLAG05=No) SetEqual(\FLAG06=No) SetEqual(\FLAG07=No) SetEqual(\FLAG08=No) SetEqual(\FLAG09=No) SetEqual(\FLAG10=No) SetEqual(\FLAG11=No) SetEqual(\FLAG12=No) SetEqual(\FLAG13=No) SetEqual(\FLAG14=No) SetEqual(\FLAG15=No) SetEqual(\FLAG16=No) SetEqual(\FLAG17=No) SetEqual(\FLAG18=No) SetEqual(\FLAG19=No) SetEqual(\FLAG20=No) SetEqual(\FLAG20=No) SetEqual(\FLAG21=No) SetEqual(\FLAG22=No) SetEqual(\FLAG23=No) SetEqual(\FLAG24=No) SetEqual(\FLAG25=No) SetEqual(\FLAG26=No) SetEqual(\FLAG27=No) SetEqual(\FLAG28=No) SetEqual(\FLAG29=No) SetEqual(\FLAG30=No) SetEqual(\FLAG31=No) SetEqual(\FLAG32=No) SetEqual(\FLAG33=No) SetEqual(\FLAG34=No) SetEqual(\FLAG35=No) SetEqual(\FLAG36=No) SetEqual(\FLAG37=No) SetEqual(\FLAG38=No) SetEqual(\FLAG39=No) SetEqual(\FLAG40=No) SetEqual(\FLAG41=No) SetEqual(\FLAG42=No) SetEqual(\FLAG43=No) SetEqual(\FLAG44=No) SetEqual(\FLAG45=No) SetEqual(\FLAG46=No) SetEqual(\FLAG47=No) SetEqual(\FLAG48=No) SetEqual(\FLAG49=No) SetEqual(\FLAG50=No) SetEqual(\FLAG51=No) SetEqual(\FLAG52=No) SetEqual(\FLAG53=No) SetEqual(\FLAG54=No) SetEqual(\FLAG55=No) SetEqual(\FLAG56=No) SetEqual(\FLAG57=No) SetEqual(\FLAG58=No) SetEqual(\FLAG59=No) SetEqual(\FLAG60=No) SetEqual(\FLAG61=No) SetEqual(\FLAG62=No) SetEqual(\FLAG63=No) SetEqual(\FLAG64=No) SetEqual(\FLAG65=No) SetEqual(\FLAG66=No) SetEqual(\FLAG67=No) SetEqual(\FLAG68=No) SetEqual(\FLAG69=No) SetEqual(\FLAG70=No) SetEqual(\FLAG71=No) SetEqual(\FLAG72=No) SetEqual(\FLAG73=No) SetEqual(\FLAG74=No) SetEqual(\FLAG75=No) SetEqual(\FLAG76=No) SetEqual(\FLAG77=No) SetEqual(\FLAG78=No) SetEqual(\FLAG79=No) SetEqual(\FLAG80=No) SetEqual(\FLAG81=No) SetEqual(\FLAG82=No) Return RESETACTL ;this subroutine resets active memory variables *ResetActive setequal(/NAME=%var%D) setequal(/LAST=%DATE%) setequal(/LASTCHK=%DATE%) setequal(/FROM=) SetEqual(/STREET=) SetEqual(/PASS=) SetEqual(/PHONE=) SetEqual(/WORK=) SetEqual(/BIRTH=) SetEqual(/SEC=%NEWSEC%) ; set security level to new user security SetEqual(/PROTOCOL=N) SetEqual(/COMP=) SetEqual(/SCREENLEN=24) SetEqual(/DEFAVAIL=Y) SetEqual(/ALIAS=) SetEqual(/COUNTRY=) SetEqual(/COMPANY=) SetEqual(/TITLE=) SetEqual(/MHSNAME=) SetEqual(/STREET1=) SetEqual(/STREET=) SetEqual(/FROM=) SetEqual(/UPLOADS=0) SetEqual(/DOWNLOADS=0) SetEqual(/KDOWN=0) SetEqual(/KUP=0) ;used to be graphics SetEqual(/SCREENLEN=24) SetEqual(/CUTOFF=0) SetEqual(/CHATREQ=0) SetEqual(/MINSU=0) SetEqual(/BYTESTODAY=0) SetEqual(/LASTT=%TIME%) ; set last time on to current time SetEqual(/LASTDOWN=1) SetEqual(/LASTUP=1) SetEqual(/LASTMSG=1) SetEqual(/LEFT=%NEWTIME%) ; set time left to new user time limit SetEqual(/TIMESON=0) SetEqual(/FIRST=%DATE%) SetEqual(/DOORSE=0) SetEqual(/SUBBAL=0) SetEqual(/SUB=No) SetEqual(/TL=0) SetEqual(/FRATIO=0) SetEqual(/DAILYDL=0) SetEqual(/DAILYUL=0) SetEqual(/NBAL=0) SetEqual(/WAIT=No) ;SetEqual(/LO=No) SetEqual(/MSENT=0) SetEqual(/SUBDATE=%DATE%) ; date subscription expires SetEqual(/EXPTO=0) SetEqual(/EXPSEC=%NEWSEC%) SetEqual(/EXPERT=No) SetEqual(/PSYS=No) ; Sysop logon page SetEqual(/ITIME=No) ; no time limit SetEqual(/ANSMUSIC=No) SetEqual(/MEMO=) SetEqual(/MEMO2=) SetEqual(/MEMO3=) SetEqual(/MEMO4=) SetEqual(/MEMO5=) SetEqual(/MEMO6=) SetEqual(/INT1=0) SetEqual(/INT2=0) SetEqual(/INT3=0) SetEqual(/INT4=0) SetEqual(/INT5=0) SetEqual(/INT6=0) SetEqual(/CHR1=) SetEqual(/CHR2=) SetEqual(/CHR3=) SetEqual(/FLAG01=No) SetEqual(/FLAG02=No) SetEqual(/FLAG03=No) SetEqual(/FLAG04=No) SetEqual(/FLAG05=No) SetEqual(/FLAG06=No) SetEqual(/FLAG07=No) SetEqual(/FLAG08=No) SetEqual(/FLAG09=No) SetEqual(/FLAG10=No) SetEqual(/FLAG11=No) SetEqual(/FLAG12=No) SetEqual(/FLAG13=No) SetEqual(/FLAG14=No) SetEqual(/FLAG15=No) SetEqual(/FLAG16=No) SetEqual(/FLAG17=No) SetEqual(/FLAG18=No) SetEqual(/FLAG19=No) SetEqual(/FLAG20=No) SetEqual(/FLAG20=No) SetEqual(/FLAG21=No) SetEqual(/FLAG22=No) SetEqual(/FLAG23=No) SetEqual(/FLAG24=No) SetEqual(/FLAG25=No) SetEqual(/FLAG26=No) SetEqual(/FLAG27=No) SetEqual(/FLAG28=No) SetEqual(/FLAG29=No) SetEqual(/FLAG30=No) SetEqual(/FLAG31=No) SetEqual(/FLAG32=No) SetEqual(/FLAG33=No) SetEqual(/FLAG34=No) SetEqual(/FLAG35=No) SetEqual(/FLAG36=No) SetEqual(/FLAG37=No) SetEqual(/FLAG38=No) SetEqual(/FLAG39=No) SetEqual(/FLAG40=No) SetEqual(/FLAG41=No) SetEqual(/FLAG42=No) SetEqual(/FLAG43=No) SetEqual(/FLAG44=No) SetEqual(/FLAG45=No) SetEqual(/FLAG46=No) SetEqual(/FLAG47=No) SetEqual(/FLAG48=No) SetEqual(/FLAG49=No) SetEqual(/FLAG50=No) SetEqual(/FLAG51=No) SetEqual(/FLAG52=No) SetEqual(/FLAG53=No) SetEqual(/FLAG54=No) SetEqual(/FLAG55=No) SetEqual(/FLAG56=No) SetEqual(/FLAG57=No) SetEqual(/FLAG58=No) SetEqual(/FLAG59=No) SetEqual(/FLAG60=No) SetEqual(/FLAG61=No) SetEqual(/FLAG62=No) SetEqual(/FLAG63=No) SetEqual(/FLAG64=No) SetEqual(/FLAG65=No) SetEqual(/FLAG66=No) SetEqual(/FLAG67=No) SetEqual(/FLAG68=No) SetEqual(/FLAG69=No) SetEqual(/FLAG70=No) SetEqual(/FLAG71=No) SetEqual(/FLAG72=No) SetEqual(/FLAG73=No) SetEqual(/FLAG74=No) SetEqual(/FLAG75=No) SetEqual(/FLAG76=No) SetEqual(/FLAG77=No) SetEqual(/FLAG78=No) SetEqual(/FLAG79=No) SetEqual(/FLAG80=No) SetEqual(/FLAG81=No) SetEqual(/FLAG82=No) Return VIEWCTL⌐; version= 0.99.01 ; View.ctl for PB2.0 ; Views RIP, ascii and ansi files. clearscr if (%GRAPHICS%)=(RIP) then say(!|*|J10|n2000|M08|fZKQO|b0K1IYOIS280P0002X000|W00|c05|=001EKF01|U0C1AZ6IY0I|1bUKJGYQNM00010000008NCC1701.BMP|#|#|#) defpause(!|y0000010U000000001a1a000000Marin|1B00000202YY050F000F010700000907000000|1U1EJG9QM82B00<>Stop<>S|1B00000202YY050F000F010700000907000000|1UB4JGJGM82600<>NonStop<>N|1B00000202YY050F000F010700000907000000|1UKUJGT6M87300<>Continue<>^M|#|#|#) say(RIPVIEW) endif DefPif (s:stop,n:nonstop) view(%nv%viewme%) defpause() enter if (%graphics%)=(RIP) then say(!|1K|*||Y00000100|#|#|#) endif return QWKNEWCTL¬ say(&11& Creating New File Listing... *) zap(%pbtemp%QwkWork\newfiles.dat,New file list created for %name% on %date% at %time% (%BBS%)) appendto(%pbtemp%QwkWork\newfiles.dat,) appendto(%pbtemp%QwkWork\newfiles.dat, -- Files added to system since /:lastchk/ follow --) setequal(w=0) *stlN inc(w) if (%var%w)>(%maxarea%) then goto (doneN) selarea(%var%w) enufsec(%areasec%) ifnottrue(goto(nxareaN)) if (%msgiscan%)=(Y) then goto (pscN) getf ifnottrue(goto(nxareaN)) *pscN listfile(AREAS\FAREA%VAR%W) if (%farea%)<>(AREAS\FAREA%VAR%W) then goto (nxareaN) setequal(t=0) *stlFN inc(t) if (%var%t)>(%maxfarea%) then goto (nxareaN) selfarea(%var%t) enufsec(%filsec%) ifnottrue(goto(stlFN)) jump (Twirl) setnv(fn=%FILPATH%files.bbs) if (%CD%)=(Yes) then setnv(fn=%CDPATH%%filarea%\files.bbs) listlog() appendto(%pbtemp%QwkWork\newfiles.dat,) appendto(%pbtemp%QwkWork\newfiles.dat,%var%t: %filName%) listlog(%pbtemp%QwkWork\newfiles.dat) new(%nv%fn%,12,15,7,11,3,/:LASTCHK/,%var%k,%aresp%) goto(stlFN) *nxareaN goto(stlN) *doneN listlog() say(Done!) setequal(/lastchk=%date%) return *twirl INC(P) if (%VAR%P)>(8) then setequal(P=1) if (%VAR%P)=(1) then say(-*) if (%VAR%P)=(2) then say(\*) if (%VAR%P)=(3) then say(|*) if (%VAR%P)=(4) then say(/*) if (%VAR%P)=(5) then say(-*) if (%VAR%P)=(6) then say(\*) if (%VAR%P)=(7) then say(|*) if (%VAR%P)=(8) then say(/*) back(1) ret 125ACTLö enufsec(50) ifnottrue(return) get (/:memo/,2,1) setequal(a=%ARESP%) len(/:memo3/) notif (%aresp%)=(0) then setequal(a=/:memo3/) say(Moving .EXE file ...*) fcopy(\pbcopy\temp2\pb%VAR%A.EXE,\pbcopy\temp\temp\temp\pboard.exe) notif (%ARESP%)=(0) then return say( Done!&CR&Adding your serial number ...*) get (/:memo/,3,10) setequal(b=%ARESP%) exec(\serial\serial.exe %VAR%A \pbcopy\temp\temp\temp\pboard.exe #%VAR%B /125A) say( Done!&CR&Adding .EXE to batch (may take a while) ...*) exec(\pbcopy\pc.exe \pbcopy\temp\temp\BBS2 \PBCOPY\temp\temp\temp\) say( Done!&CR&Compressing batch ...*) exec(\DOS\LHA.EXE U \PBCOPY\TEMP\MAIN2.LZH \PBCOPY\TEMP\TEMP\BBS2) say( Done!&CR&Zipping file ...*) exec(\DOS\PKZ110.EXE \PBCOPY\PB126-3.ZIP \PBCOPY\TEMP\MAIN2.LZH) say( Done!&CR&Sending PB126-?.ZIP via ZMODEM ...) say() exec(\BBS\DSZ.COM port %PORT% speed %LBAUD% sz -m \PBCOPY\PB126-?.ZIP) return DOWNCTL╟!setnv(wipe=) loadsub(control\exitwip.ctl) *down setnv(q2=0) setnv(r2=0) SetActivity(Downloading Files) if (%graphics%)=(RIP) then clearscr Display (Display\DOWN) Enter Kill(%pbtemp%Batch.%NODE%) setequal(b=Z) if (%LOCAL%)=(TRUE) then goto (Pok) If (/:PROTOCOL/)=(N) Then Goto (PickProt) Display(Display\defuse) SetEqual(b=/:PROTOCOL/) Goto (pseled) *PickProt Display (Display\DN-PROTS) MenuAsk (%CRON%&15&Which transfer protocol would you like to use?&11&(or ENTER to Quit)&12&: &14&*) Find(%RESP%,\) ;make sure they didnt stick a backslash in there NotIf (%ARESP%)=(0) Then Goto (badprot) Get(%RESP%,1,1) If(%ARESP%)=(?) then SetNv(helpoption=14) ; help on protocols Jump(OlHelp) Goto(PickProt) endif If(%ARESP%)=(/) then Jump(Anywhere) Goto(PickProt) endif find(&b,**) iftrue(setequal(/resp=ZB)) BigIf(h:phelp,q:filesback,<CR>:filesback) SetEqual(b=%RESP%) *pseled Seek(protocol\%var%b-D.BT) ;check to see If protocol exists.. IfTrue(Goto (Pok)) *badprot loadsub(control\macros\badsel.ctl) Goto (PickProt) ;go back and ask again.. *Pok setnv(protocol=%var%b) Seek(%pbtemp%tagged.%NODE%) ;see If there are any tagged files.. IfTrue(Goto (texist)) linefeed(1) len(%var%b) ;see If they picked a batch protocol NotIf(%ARESP%)=(1) Then loadmem(control\BATCH.CTL) *fname if (%nv%filename%)<>() then setwrap(%nv%filename%) setnv(filename=) endif say(&15&Please enter the name of the file to download&12&: &15&( )&14&*) back(13) menuask(%NOCR%%CRON%%LEN%12%*) if (%RESP%)=(<CR>) then say() if (%RESP%)=(<CR>) then goto (ret0) Get(%RESP%,1,1) If(%ARESP%)=(?) then SetNv(helpoption=13) Jump(OlHelp) Goto(Fname) endif len(%Resp%) back(%Aresp%) adddef(.%DEFEXT%) say(%Resp%&11&&CR&) jump (pf) setequal(d=%resp%) find(&d,?) iftrue(goto(wc0)) find(&d,*) iftrue(goto(wc0)) Seekfall(%RESP%) If (%ARESP%)=(INVALID) Then Goto (invfn) If (%ARESP%)=(No) Then Goto (nothere) If (%ARESP%)=(NOT ENOUGH) Then Goto (notenuf) If (%RATIO%)=(NOT OK) Then Goto (badratio) if (/:dailydl/)=(%dailyL%) then goto (badratio) selFarea(%ARESP%) enufsec(%filsec%) ifnottrue(goto(notenuf)) size(%FILPATH%%RESP%) say(&15&──────────────────> %RESP% Information:&11&&CR&) if (%FREE%)=(Yes) then say(Free Download, *) setequal(d=%aresp%) addcomma(%aresp%) say(%ARESP% bytes &3&(*) ttime(%var%d) say(%ARESP% at %BAUD% Baud)) cmpval(%TTIM%,/:LEFT/) If (%ARESP%)=(No) Then If (%FREE%)=(No) Then Goto (notenuftime) SetEqual(d=%RESP%) say(&CR&&15& Would you like to download this file? (&12&Y&15&/&12&N&15&)&14&*) back(4) yesnoask(*) If (%RESP%)=(No) Then Goto (ex) say(&15&Would you like us to log you off afterwards? (&12&Y&15&/&12&N&15&)&14&*) back(4) yesnoask(*) SetEqual(m=%RESP%) If (%LOCAL%)=(TRUE) Then Goto (lcl) If (%CD%)=(Yes) then Say(&CR&&12&Copying File from CD-ROM Drive...*) FCopy(%FILPATH%%VAR%D,%PBTEMP%%VAR%D) ; copy file from CD to hard drive If(%ARESP%)=(ERROR) Then Goto(CopyError) SetNv(path=%PBTEMP%) Say(Done!) say(&CR&&11&We're sending the file you requested. Please get ready to receive it now.) endif If (%CD%)<>(Yes) then SetNv(path=%FILPATH%) say(&CR&&11&We're sending the file you requested. Please get ready to receive it now.) endif fixfile(protocol\%var%b-d.bt,%pbtemp%%var%b-d.bat) initclock setequal(n=%var%b) exec(%pbtemp%%var%b-d.BAT│) If(%CD%)=(Yes) then Kill(%PBTEMP%%VAR%D) ; kill file copied from CD to hd drive *success setequal(t=) NotIf (%ARESP%)=(0) Then Goto (aborted) notif (%LOCAL%)=(FALSE) then setequal(t=TOG) if (%LOCAL%)=(FALSE) then toglocal xfertime SetEqual(e=%ARESP%) setequal(o=%xtime%) size(%FILPATH%%var%d) divvar(%ARESP%/%var%o=g) cnvtk(%ARESP%) addvar(%aresp%+/:bytestoday/=o) setequal(/bytestoday=%var%o) addvar(%ARESP%+/:KDOWN/=o) SetEqual(/KDOWN=%var%o) say(%BEEP%*) log(--,%var%d Downloaded) log(--, Protocol: '%var%b'.) log(--,Rate: %var%g CPS) appendto(logs\DOWNLOAD.%NODE%,%var%d downloaded by %NAME% at %TIME% on %DATE%.) SetEqual(a=/:DOWNLOADS/) notif (%free%)=(Yes) then inc(a) SetEqual(/DOWNLOADS=%var%a) setequal(a=/:dailydl/) notif (%free%)=(Yes) then Inc(a) setequal(/dailydl=%var%a) notif (%var%t)=(TOG) then toglocal If (%FREE%)=(Yes) Then Goto (free) *bfr eline(20) Display (Display\SUCCESS) If (&m)=(Yes) Then Goto (autooff) *ex selfarea(/:LASTDOWN/) linefeed(1) goto (ret0) *CopyError Log(!!,File "%VAR%D" unable to be copied from "%FILPATH%" to "%PBTEMP%") Beep(1) Say(&CR&&14&ERROR: The selected file could not be copied from the CD-ROM Drive!) Say( Please notify the Sysop immediately!) Say(&CR&&12&Aborting transfer...) SecPause(2) Goto(ex) *aborted eline(20) log(--,Download of %var%d aborted.) display(display\aborted) goto (ex) *lcl menuask(&CR&&15&Please specify the path (e.g. C:\DLS\) for this file&12&: &14&*) Get(%RESP%,1,1) If(%ARESP%)=(?) then SetNv(helpoption=122) ; help on path to file Jump(OlHelp) Goto(Lcl) endif If(%ARESP%)=(/) then Jump(Anywhere) Goto(lcl) endif setequal(k=10) initclock setequal(n=LOCAL) fcopy (%FILPATH%%var%d,%RESP%\%var%d) notif (%ARESP%)=(0) then goto (aborted) goto (success) *badratio Display(Display\BADRATIO) selfarea(/:LASTDOWN/) linefeed(1) goto (ret0) *autooff loadmem(control\AutoOff.ctl) *free log(--,Freefile downloaded, time refunded.) size(%filpath%%var%d) ttime(%ARESP%) addvar(%TTIM%+/:LEFT/=t) SetEqual(/LEFT=%var%t) If (&m)=(Yes) Then Goto (autooff) Goto (bfr) *texist kill(%pbtemp%batch.%node%) kill(%pbtemp%free.%node%) len(%var%b) If (%ARESP%)=(1) Then Goto (len1) ;lview(tagged.%NODE%,10,7) loadsub(control\macros\taglist.ctl) say() if (%nv%totaltime%)>(/:left/) then say(&11&You do not have enough time left to download all of these files.) say(&15&Would you like to modify this list? (&12&Y&15&/&12&N&15&)&14&*) back(4) yesnoask(*) if (%resp%)=(No) then goto (dodl) setequal(/nvB=%var%b) loadsub(control\macros\deltag.ctl,goto(prompt)) setequal(b=%nv%b%) clearscr goto(tExist) *dodl say(&CR&&15&Would you like to download the tagged files? (&12&Y&15&/&12&N&15&)&14&*) back(4) yesnoask(*) say(&14&) If (%RESP%)=(No) Then loadmem(control\BATCH.CTL,Goto (startbatch)) fcopy(%pbtemp%tagged2.%NODE%,%pbtemp%batch.%NODE%) lines(%pbtemp%batch.%NODE%) SetEqual(m=%NV%TotalTime%) setequal(e=%aresp%) SetEqual(w=%ARESP%) setequal(s=%aresp%) if (%nv%totalfree%)=() then goto (sdn) addvar(%var%s+-%nv%totalfree%=s) *sdn setequal(q=0) loadmem(control\BATCH.CTL,Goto (fname)) *len1 say(&10&&CR&You have tagged files but they can only be downloaded with a BATCH) say(protocol. Please press &11&Enter&10& now to abort then choose a dIfferent protocol) say(if you'd like to download your tagged files.&CR&) Goto (fname) *notenuftime Display(Display\NODLTIME) goto (ret0) *phelp Display(Display\help\prot,/:SEC/) Goto (PickProt) *invfn Display(Display\INVALID) flushout selfarea(/:LASTDOWN/) Enter goto (fname) *filesback goto (ret0) *notenuf Display (Display\fbadsec) selfarea(/:LASTDOWN/) goto (ret0) *NotHere Display(Display\notfnd) goto (fname) *moveerr say(&CR&&14&The directory you specify is where the file already resides!&CR&) goto (endmove) *pf inpopen(passfile.lst) setequal(c=%RESP%,) len(%VAR%C) setequal(d=%ARESP%) do inpread setequal(e=%ARESP%) get(&e,1,%VAR%D) if (%ARESP%)=(&C) then goto (ip) eofloop inpclose ret *ip inpclose say(&15&What is the password for this file?&12&: &14&*) cgetpass(o) say() get(&e,%VAR%D,100) setequal(a=,%RESP%) setequal(f=%aresp%) addvar(%var%d+-1=d) get(&c,1,%var%d) setequal(/resp=%aresp%) if (%var%a)=(%var%f) then ret goto (fname) *OlHelp LoadSub(olhelp\olhelp.ctl,goto(implementoption)) Ret *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Ret *bsel loadsub(control\macros\badsel.ctl) ;Clear Stack on Error! ;---PowerStak Block 3 setequal(/nvqueue=) ;---PowerStak Block 3 End Ret *ret0 setnv(protocol=) if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return *wc0 say(&CR&&14&Wildcards are not permitted with single-file protocols. If you) say(would like to use wildcards, please try selecting a Batch protocol.&CR&) enter goto(fname) FINDCTLk if (%nv%wipmode%)=(1) then loadmem(control\macros\wipfind.ctl) ;USERFIND by Doug Vermes with modifications by Scott Brown if (%graphics%)=(RIP) then clearscr *UserFind delimit( ,;) SetActivity (User Find) ;---PowerStak Block 1 (with modifications) len(%nv%queue%) notif (%aresp%) = (0) then setequal(/resp=%nv%queue%) SetEqual(/nvqueue=) Say (&CR&&15&Enter Name of User: &12&*) NiceSay(%RESP%) Goto(stk) ; if all dequeued, continue on... endif ;---PowerStak Block 1 End--- (with modifications) *Main Say(&CR&&12&Press [ENTER] to Abort User Find) Say (&CR&&15&Enter Name of User: &12&*) MenuAsk(%CRON%*) *Stk If(%RESP%)=(<CR>) then Return Setnv(key=%RESP%) ;%NV%KEY% is Search Key Say(&CR&&15&Name From Last Date On Last Time On) Say(&7&---------------------------------------------------------------------------) log (--,UserFind for:%Resp%) SetEqual(n=1) ;user number to search from SetEqual(y=3) ;number of lines displayed *Searching SeekUserP(%NV%KEY%,%VAR%N) ifnottrue(goto (nomore)) AddVar(%NDXREC%+1=n) Inc(y) Loaduser (%NDNUMB%) SetEqual(a=\:NAME\) SetLen(a=23) Say(&3&%VAR%A*) SetEqual(a=\:FROM\) SetLen(a=26) ;idea... Say(%VAR%A*) Say(\:LAST\ \:LASTT\) ; CmpVal(%VAR%Y,/:SCREENLEN/) If(&y)>=(/:SCREENLEN/) then Goto(MorePrompt) ; IfNotTrue(Goto(MorePrompt)) Goto(Searching) ;enufsec (60) ;iftrue (Say (&7&Street : &3&\:STREET\)) ;Say (&7&From : &3&\:FROM\) ;iftrue(Say (&7&Birthday : &3&\:BIRTH\)) ;iftrue(Say (&7&Phone Number : &3&\:PHONE\)) ;iftrue(say (&7&Work Phone : &3&\:WORK\)) ;Say (&7&Last Date On : &3&\:LAST\) ;Say (&7&Last Time On : &3&\:LASTT\&CR&) ;yesnoask (&12&Search For Another User (Y/N)? &15&*) ;If (%RESP%)=(Yes) then goto (moreprompt) return *NoMore Say (&4&-- End of List --) Enter SetNv(key=) return *MorePrompt ResetPause Defpause ($7$&0&[Send more text?]$0$&3& (&11&S&3&)top, (&11&N&3&)onstop or (&11&C&3&)ontinue?&12&: &7&) DefPif (s:stop,n:nonstop) PausePrompt If(%ARESP%)=(STOP) then Goto(NoMore) *YesMore Back(17) Eline(17) SetEqual(y=1) Goto(Searching) *NotEnufSec Say (&12&Sorry, but your security is not high enough to access this command.&CR&) Enter return USERRWIPCTL8 loadsub(control\exitwip.ctl) LoadSub(control\macros\savevars.ctl) *WhichOne Say(&CR&&15&Load User Record of person message is Addressed (&12&T&15&)o or Sent (&12&B&15&)y? &14&*) MenuKey(%CRON%*) BigNiceSay(T:To,B:From) BigIf(T:UTo,B:UFrom,<CR>:AGMail) Say(&CR&&12&Invalid selection. Please try again...) Goto(WhichOne) *UTo SetNv(editor=%MSGTO%) Goto(LoadRec) *UFrom SetNv(editor=%MSGFROM%) *LoadRec ClearScr SetEqual(l=1) LoadSub(control\ued1.ctl) LoadSub(control\macros\restvars.ctl) SetEqual(/nveditor=) *agmail return PASSDOTSCTLτLen(/:PASS/) If(%ARESP%)<(1) then Return SetNv(passlen=%ARESP%) SetEqual(u=1) SetNv(passdots=) *Looper SetNv(passdots=%NV%PASSDOTS%.) ; Say(.*) Inc(u) If(&u)<=(%NV%PASSLEN%) then Goto(Looper) SetNv(passlen=) Return BYECTLsetnv(norefresh=1) if (%nv%wipmode%)=(1) then goto (wipbye) Seek(%pbtemp%Tagged.%NODE%) IfTrue (Say(&CR&&10&You have files tagged for download!%BEEP%%BEEP%)) flushout Say(&CR&&15&Are you sure you want to disconnect? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If (%RESP%)=(No) Then Return clearscr Display (display\goodbye) Log(<<,User logged off normally.) QuitBBS *wipBye seek (%pbtemp%tagged.%node%) writeln(Are you sure you want to log off?) writeln(SYSOP: Type 1 [enter] for no, 2 [enter] for yes) writeln() iftrue(setequal(c=13~You have files tagged for download! Are you sure you want to log off?~Log Off?~2~)) ifnottrue(setequal(c=13~Are you sure you want to log off?~Log off?~2~)) jump (wipc) *gi0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) *tryr setequal(r=%resp%) ascii if (%aresp%)=(21) then goto (wipBye) if (%aresp%)=(6) then len(%var%r) if (%aresp%)=(1) then goto (gi0) get(&r,2,1000) setequal(/resp=%aresp%) goto (tryr) endif if (%resp%)<>(2) then return log(<<,User logged off normally.) setnv(NoInfo=1) loadsub(control\newdisp.ctl,setnv(file=goodbye)) setnv(file=goodbye.wav) loadsub(control\wipsound.ctl) secpause(2) quitbbs *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(200) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) if(%ARESP%)<>(6) THEN FLUSHOUT IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs QWKBULLCTLWsay( Adding New Bulletins to Packet... *) setequal(t=0) do inc(t) seek(display\bull%var%t.asc) ifnottrue(goto(done)) fdate(display\bull%var%t.asc) Julian(%aresp%) setequal(w=%aresp%) julian(/:last/) if (%var%w)=>(%aresp%) then fcopy(display\bull%var%t.asc,%pbtemp%qwkwork\blt-1.%var%t) loop *done say(Done!) return UBATCHCTLα setnv(origarea=%farea%) jump (garea) setequal(w=1) setequal(/nvUDir=%farea%) ; listfile(%nv%OriArea%) selfarea(/:lastdown/) exec(zc2\adir Rec%NODE%\*.* >%pbtemp%DescDir.%NODE%) inpopen(%pbtemp%DescDir.%NODE%) do fendif(co) inpread kill(Rec%NODE%\%ARESP%) loop *co inpclose kill(%pbtemp%udescs.%NODE%,%pbtemp%ubatch.%NODE%,%pbtemp%ubatch1.%NODE%) ; If(%LOCAL%)=(TRUE) Then Loadmem(control\macros\lubatch.ctl) *fname if (&w)=(10) then goto (askup) say(&CR&&10&Pressing (ENTER) will let you start uploading your files.) order(%var%w) say(&15&Please enter name of the %var%w%aresp% file to upload&12&: &15&( )&14&*) back(13) menuask(%NOCR%%CRON%%LEN%12%*) if (%RESP%)=(<CR>) then Say () if (%RESP%)=(<CR>) then goto (askup) len(%Resp%) back(%Aresp%) adddef(.%DEFEXT%) say(%Resp%) setequal(d=%RESP%) iseek(%var%d) if (%aresp%)=(Yes) then goto (ishere) if (%Aresp%)=(INVALID) then goto (invfn) appendto(%pbtemp%ubatch.%NODE%,%var%p%var%d) setequal(^%var%w=%var%p%var%d) inc(w) appendto(%pbtemp%ubatch1.%NODE%,%var%d) say(&CR&&14&Please enter a description for your file. &10&The description can take up 3 lines.*) resetwrap ;the resetwrap command resets the wordwrap. say(&CR&&15& (----2----3----4----5----6----7---8----)) wrapask (%MIN%1%%LEN%40%&3&1&12&: &15&*) setequal(r=1) appendto(%pbtemp%udescs.%NODE%,%RESP%) zap(DescTemp\%var%d,%RESP%) wrapask (%LEN%40%%CRON%&3&2&12&: &15&*) find(%resp%,<CR>) notif (%aresp%)=(0) then goto (nomore) appendto(%pbtemp%udescs.%NODE%,%RESP%) appendto(DescTemp\%var%d,%RESP%) setequal(r=2) ask (%LEN%39%&3&3&12&: &15&*) appendto(%pbtemp%udescs.%NODE%,%RESP%) appendto(DescTemp\%var%d,%RESP%) setequal(r=3) goto (fname) *nomore appendto(%pbtemp%udescs.%NODE%,) appendto(%pbtemp%udescs.%NODE%,) appendto(DescTemp\%var%d,) appendto(DescTemp\%var%d,) goto (fname) *askup if (^1)=() then goto (ex) say(&CR&&15& Would you like to upload these files? (&12&Y&15&/&12&N&15&)&14&*) back(4) yesnoask(*) if (%Resp%)=(No) then goto (ex) say(&15&Would you like us to log you off afterwards? (&12&Y&15&/&12&N&15&)&14&*) back(4) yesnoask(*) setequal(m=%RESP%) if (%LOCAL%)=(TRUE) then goto (local) setactivity(Uploading Files) say(&CR&&11&We're ready to receive the files. Please start sending them now.) fixfile(protocol\%var%b-u.bt,%pbtemp%%var%b-u.bat) initclock ;initalize the timer that keeps track of how long the d/l took... exec(%pbtemp%%var%b-u.BAT│) tfreeze(-1) kill(%pbtemp%%var%b-u.bat) *success listfile(%nv%UDir%) selfarea(/:lastup/) notif (%ARESP%)=(0) then goto (aborted) xfertime setequal(e=%ARESP%) if (%ARESP%)=(ERROR) then goto (dsucc) upped setequal(t=0) linefeed(1) setequal(a=/:UPLOADS/) clearmem setequal(c=0) setequal(i=1) exec(zc2\adir Rec%NODE%\*.* >%pbtemp%RecDir.%NODE%) lines(%pbtemp%RecDir.%NODE%) setequal(/nvRecLns=%ARESP%) if (%ARESP%)=(0) then goto (stcalc) fcopy(%pbtemp%RecDir.%NODE%,%pbtemp%ubatch1.%NODE%) *stcalc inpline(%pbtemp%ubatch1.%NODE%,%var%i) if (%ARESP%)=() then goto (donecalc) setequal(d=%ARESP%) setequal(/nvOA=%FAREA%) ; listfile(%NV%OriArea%) iseek(%var%d) ; if (%aresp%)=(Yes) then goto (nextfile2) if (%aresp%)=(Yes) then goto (dozc2) if (%aresp%)=(INVALID) then goto (nextfile2) listfile(%NV%OA%) iseek(%var%d) say(aresp from second iseek:%aresp%!) ; if (%aresp%)=(Yes) then goto (nextfile) if (%aresp%)=(Yes) then goto (dozc2) if (%aresp%)=(INVALID) then goto (nextfile) setequal(b=0) notif (%nv%RecLns%)=(0) then fcopy(Rec%NODE%\%var%d,%var%p%var%d) *dozc2 setnv(zc2path=%var%p) setnv(zc2file=%var%d) loadsub(zc2\zc2.ctl) if (&a)=(2) then goto (nextfile) size(%var%p%var%d) addvar(%var%t+%ARESP%=t) cnvtk(%ARESP%) addvar(%ARESP%+/:KUP/=o) setequal(/KUP=%var%o) multvar(%var%c*3=y) inc(y) notif (%var%b)=(0) then goto (co2) seek(DescTemp\%var%d) IfNotTrue(goto (c3)) setequal(^2=) setequal(^3=) setequal(^4=) setequal(^5=) setequal(^6=) setequal(^7=) setequal(^8=) setequal(^9=) setequal(^10=) arrayread(DescTemp\%var%d) goto (co2) *c3 if (%nv%RecLns%)=(0) then goto (c4) say(&CR&&14&Please enter a description for &11&%VAR%D&14&. &10&The description can take up 3 lines.*) resetwrap ;the resetwrap command resets the wordwrap. say(&CR&&15& (----2----3----4----5----6----7---8----)) wrapask (%MIN%1%%LEN%40%&3&1&12&: &15&*) setequal(r=1) setequal(^2=) setequal(^3=) setequal(^4=) setequal(^5=) setequal(^6=) setequal(^8=) setequal(^9=) setequal(^10=) setequal(^1=%RESP%) wrapask (%LEN%40%%CRON%&3&2&12&: &15&*) find(%resp%,<CR>) notif (%aresp%)=(0) then goto (c4) setequal(^2=%RESP%) setequal(r=2) ask (%LEN%39%&3&3&12&: &15&*) setequal(^3=%RESP%) setequal(r=3) goto (co2) *co2 *c4 setequal(k=10) *scnt if (^:k^)<>() then goto (dnp0) addvar(%var%k+-1=k) if (%var%k)>(1) then goto (scnt) *dnp0 file2(%var%p,%var%d,%var%k) log(--,%var%d Uploaded (batch).) log(--, Protocol: '%nv%protocol'.) appendto(logs\UPLOAD.%NODE%,%var%d uploaded at %TIME% on %DATE% by %NAME%.) *nextfile inc(i) inc(c) goto (stcalc) *donecalc inc(c) say(%BEEP%) multvar(%XMIN%*60=o) divvar(%var%t/%var%o=g) addvar(/:uploads/+%var%c=a) setequal(/UPLOADS=%var%a) addvar(/:dailyul/+%var%c=a) setequal(/dailyul=%var%a) log(--,Rate: %var%g CPS) *dsucc tfreeze(0) display (display\SUCCUB) if (%var%m)=(Yes) then goto (autooff) *ex linefeed(1) seek(bxtest.bt) if (%ARESP%)=(Yes) then goto (testup) resetlist ; listfile(%nv%OriArea%) listfile(%nv%origarea%) selfarea(/:lastdown/) tfreeze(0) setnv(protocol=) if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return *aborted inpclose inpopen(%pbtemp%ubatch.%node%) *str fendif(dn0) inpread kill(%aresp%) goto (str) *dn0 log(--,Batch Upload aborted.) inpclose display (display\ABORTED) goto (ex) *ishere display(display\ISHERE) enter linefeed(1) goto (fname) *testup fixfile(bxcheck.bt,bxcheck.bat) exec(bxcheck.bat) display (display\USUCCESS) goto (ex) *autooff loadmem(control\autoOff.ctl) *local initclock say(&CR&&10&You will now specify the path where the file resides. Ex: C:\DOWNLOADS\) menuask(&15&Please enter the path&12&: &14&*) fcopy (%RESP%\%var%d,%var%p%var%d) goto (success) *invfn display(display\INVALID) flushout selfarea(/:LASTDOWN/) enter goto (fname) *notenufs display (display\NOSPACE) selfarea(/:LASTDOWN/) enter goto (fname) *phelp display(display\help\prot,/:SEC/) goto (pickprot) *nextfile2 listfile(%nv%oa%) goto (nextfile) *garea setequal(p=files\uploads\) LoadSub(control\macros\changeu.ctl) SetEqual(p=%FILPATH%) ret NEWSEDITCTL¢#loadsub(control\exitwip.ctl) setnv(newstemp=%pbtemp%news) mkdir(%nv%newstemp%) setnv(newstemp=%nv%newstemp%\) kill(%nv%newstemp%*.*) setnv(curart=1) Loadsub(control\macros\split.ctl) ; split NEWS.TXT into individual articles If(%NV%NEWS%)=() then Goto(ReallyQuit) ; if SPLIT.CTL returned error SetEqual(a=1) SetEqual(b=0) Seek(%NV%NEWS%.%NV%NEWSEXT%) SetNv(ntstatus=%ARESP%) ; status of NEWS.TXT If(%ARESP%)=(No) then SetNv(a=%VAR%A) SetNv(b=%VAR%B) SetNv(add=NO) SetEqual(/nvnewsmade=No) ; if no NEWS.TXT file, jump to add new article Goto(NewDate) endif SetEqual(/nvnewsmade=Yes) ; has the newsletter been re-compiled yet? *ShowArticle setnv(noinc=) If(%NV%NTSTATUS%)=(No) then Goto(ReallyQuit) loadsub(control\macros\newsdisp.ctl) If(%RESP%)=(<CR>) then Goto(ShowArticle) BigNiceSay(N:Next,P:Prev,E:Edit,U:Update,K:Kill,A:Add,S:Show,Q:Quit) BigIf(N:Next,P:Prev,Q:Quit,U:Update,S:ShowArticle) SetNv(newsmade=No) ; sets flag that changes have been made to newsletter BigIf(E:Edit,K:Kill,A:Add1) Goto(Invalid2) *Add1 Say(&CR&&15&Add an article (&12&B&15&)efore or (&12&A&15&)fter the Current Article? &14&*) MenuKey(%CRON%) If(%RESP%)=(<CR>) then Goto(ShowArticle) BigNiceSay(B:Before,A:After) BigIf(B:Adding,A:Adding) Goto(Add1) *Adding SetNv(add=%RESP%) *NewDate loadsub(control\macros\newsdate.ctl) If(%RESP%)=(<CR>) then Goto(AddAbt) addvar(%nv%highart%+1=w) setnv(highart=%var%w) setnv(articles=%var%w) SetEqual(/nvtitle=%RESP%) ;if(%nv%add%)=(B) then jump (decart) If(%NV%ADD%)=(B) then Goto(BumpOthers) If(%NV%ADD%)=(A) then jump (incart) Inc(b) Seek(%nv%newstemp%NEWS%VAR%A.%VAR%B) SetNv(a=%VAR%A) SetNv(b=%VAR%B) IfTrue(Goto(BumpOthers)) endif *AfterBumping SetNv(add=) Jump(MakeHdr) InitTxt Goto(Add) ;Enter Goto(ShowArticle) *BumpOthers LoadSub(control\macros\bump.ctl) if (%nv%add%)=(B) then addvar(%var%b+-1=b) if (%nv%add%)=(B) then setnv(b=%var%b) Goto(AfterBumping) *MakeHdr Zap(%nv%newstemp%HDR%VAR%A.%VAR%B,%NV%DATE%) AppendTo(%nv%newstemp%HDR%VAR%A.%VAR%B,%NV%TITLE%) Ret *AddAbt Say(&CR&&12&New Article Aborted...) SecPause(1) Goto(showarticle) *Kill Say(&CR&&15&Are you sure you wish to kill this article? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If(%RESP%)<>(Yes) then Goto(ShowArticle) Zap(%nv%newstemp%HDR%VAR%A.%VAR%B) Zap(%nv%newstemp%NEWS%VAR%A.%VAR%B) setequal(w=%nv%highart%) addvar(%var%w+-1=w) if (%var%w)>(0) then setnv(highart=%var%w) setnv(noinc=1) goto (next) *Update If(%NV%NEWSMADE%)=(Yes) then Say(&CR&&12&No changes have been made since the last time you updated the newsletter.) SecPause(2) Goto(ShowArticle) endif LoadSub(control\macros\upnews.ctl) Goto(Quit) *Quit NotIf(%NV%NEWSMADE%)=(Yes) then Say(&CR&&12&You have made changes to the newsletter but have not yet selected to Update) Say(the newsletter. Any changes you have made will be lost if you quit now!) Say(&CR&&15&Would you like to quit anyway and lose all changes? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If(%RESP%)=(Yes) then Goto(ReallyQuit) Goto(ShowArticle) endif *ReallyQuit LoadSub(control\macros\killtemp.ctl) if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return *Next SetNv(olda=%VAR%A) SetNv(oldb=%VAR%B) *Next2 Inc(b) Seek(%nv%newstemp%NEWS%VAR%A.%VAR%B) If(%ARESP%)=(Yes) then Lines(%nv%newstemp%HDR%VAR%A.%VAR%B) If(%ARESP%)<(2) then Goto(NextUp) if (%nv%noinc%)<>(1) then jump (incart) Goto(ShowArticle) endif *NextUp ;SetEqual(b=0) ;AddVar(%VAR%B+-1=b) addvar(%var%b+1=b) ;Inc(a) *anotherB Seek(%nv%newstemp%NEWS%VAR%A.%VAR%B) if (%aresp%)=(No) then if (%var%b)=(0) then goto (nomore) setequal(b=0) inc(a) goto (anotherB) endif ;IfNotTrue(goto(nomore)) Lines(%nv%newstemp%HDR%VAR%A.%VAR%B) If(%ARESP%)<(2) then Goto(next2) if (%nv%noinc%)<>(1) then jump (incart) Goto(ShowArticle) *incart addvar(%nv%curart%+1=w) setnv(curart=%var%w) ret *decart addvar(%nv%curart%+-1=w) setnv(curart=%var%w) ret *ent Display(display\nenter) Say(&3&What would you like to do with the changes to the article?&12&: &15&*) MenuKey BigNiceSay (t:Throw Away,s:Save,e:Edit,a:Add,L:List,d:Delete Line,h:help,i:Insert) BigIf (t:abort,s:save,e:edit2,L:list,a:add,d:del,h:help,i:insert) Say(&CR&&12&Invalid selection ... Please try again.&CR&) FlushOut Goto (ent) *list linefeed(1) showtxtl(11,3) ;showtxtL is the same as showtxt except shows line numbers... linefeed(1) enter Goto (ent) *Save loadsub(control\macros\newsSave.ctl) Goto(ShowArticle) *edit2 ;If (%FULL%)=(Yes) Then Goto (add) cMenuAsk (&CR&&3&Which line would you like to edit?&12&: &15&*) Number(%RESP%) IfNotTrue (Goto (invn)) If (%RESP%)=(%MAXLINE%) Then Goto (goedit) linefeed(1) cmpval(%RESP%,%MAXLINE%) If (%ARESP%)=(No) Then Goto (Invn) *goedit SetEqual(h=%MAXLINE%) gettext(15,7,%RESP%,%RESP%) if (%nv%fromssc%)=(1) then goto (fromssc) setwrap() setmax(%var%h) Goto (ent) *invn Say(&14&That line number doesn't exist in this article. &11&Try again, please.&CR&) Goto (ent) *Prev SetNv(olda=%VAR%A) SetNv(oldb=%VAR%B) *prev2 If(&b)>(0) then AddVar(%VAR%B+-1=b) Lines(%nv%newstemp%HDR%VAR%A.%VAR%B) If(%ARESP%)<(2) then Goto(Prev) jump (decart) Goto(ShowArticle) endif If(&a)=(1) then Goto(FirstArt) AddVar(%VAR%A+-1=a) *LittleLoop ; finds highest 'b' value for current 'a' Inc(b) Seek(%nv%newstemp%NEWS%VAR%A.%VAR%B) IfTrue(goto(Littleloop)) AddVar(%VAR%B+-1=b) Lines(%nv%newstemp%HDR%VAR%A.%VAR%B) If(%ARESP%)<(2) then Goto(prev2) jump (decart) Goto(ShowArticle) *Edit SetEqual(/nva=%VAR%A) SetEqual(/nvb=%VAR%B) Say(&CR&&15&Edit (&12&D&15&)ate, (&12&T&15&)itle, or (&12&B&15&)ody of Article? &14&*) MenuKey(%CRON%) If(%RESP%)=(<CR>) then Goto(ShowArticle) BigNiceSay(D:Date,T:Title,B:Body) BigIf(D:Date,T:Title,B:Body) Goto(invalid) *Invalid Say(&CR&&12&Invalid selection. Please try again...) SecPause(1) Goto(Edit) *Invalid2 Say(&CR&&CR&&12&Invalid selection. Please try again...) SecPause(1) Goto(ShowArticle) *date Say(&CR&&15&Enter new date for article: &14&*) Picture(##-##-##) DateOk(%RESP%) IfNotTrue(goto(invdate)) SetEqual(/nvdate=%RESP%) Jump(MakeNewHeader) Goto(ShowArticle) *invdate Say(&CR&&12&That date is invalid. Please re-enter a new date...) Goto(Date) *title Say(&CR&&15&Enter new title for article: &14&*) SetFill(%NV%TITLE%) CAsk(%CRON%*) If(%RESP%)=(<CR>) then Goto(ShowArticle) SetNv(Title=%RESP%) Jump(MakeNewHeader) Goto(ShowArticle) *Body InitTxt Lines(%nv%newstemp%NEWS%VAR%A.%VAR%B) Import(%nv%newstemp%NEWS%VAR%A.%VAR%B,,1,100) *Add resetpause ;If (%FULL%)=(Yes) Then Goto (fmode) ClearScr Say(&14&You may now edit the news article. Press (&11&ENTER&14&) to end editing.&CR&) Say(&3& (--------/---------/---------/---------/---------/---------/---------/----)) spause(3) ;CmpValO(%MAXLINE%,%VAR%A) ;IfTrue(Goto(Shortmess)) AddVar(%MAXLINE%+-1=b) If(%MAXLINE%)>(1) then Showtxtt(15,7,1,%VAR%B) *getit gettext(15,7,%MAXLINE%,99) if (%nv%fromssc%)=(1) then goto (fromssc) setwrap() delextra Goto(ent) *abort Say(&CR&&12&If you throw away the changes, you will lose all changes made to the article!) Say(&15&Are you sure you want to throw it away? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If(%RESP%)=(Yes) then SetEqual(a=%NV%A%) SetEqual(b=%NV%B%) Goto(ShowArticle) endif Goto(Ent) *del showtxtl(11,3) cMenuAsk (&CR& &3&Please enter the first line to delete&12&: &15&*) Number(%RESP%) IfNotTrue (Goto (invn)) cmpval(%RESP%,%MAXLINE%) IfNotTrue (NotIf (%RESP%)=(%MAXLINE%) Then Goto (invn)) SetEqual(e=%RESP%) Say(&CR&&10&If you only want to delete one line, press (&11&ENTER&10&) here.) cMenuAsk (%CRON%&3& Please enter the last line to delete&12&: &15&*) SetEqual(g=%RESP%) If (&g)=(<CR>) Then SetEqual(g=%var%e) Say(&CR&&14&You have selected to delete the following block of text:) ShowTxtT(15,7,%VAR%E,%VAR%G) Say(&15&Are you sure you want to delete this text? (&12&Y&15&/&12&N&15&)&14&*) Back(4) SetEqual(/nvyndef=%YESNODEF%) Default(N) YesNoAsk(*) Default(%NV%YNDEF%) NotIf(%RESP%)=(Yes) then goto(delabort) DelLines(%var%e,%var%g) If (%ARESP%)=(ERROR) Then Goto (invn) Say(&CR&&11&Lines %var%e to %var%G have been deleted.) Goto (ent) *delabort Say(&CR&&12&Delete text aborted...) Goto(ent) *FirstArt Say(&12&&CR&This is the first article.) setnv(curart=1) SetEqual(a=%NV%OLDA%) SetEqual(b=%NV%OLDB%) SecPause(1) Goto(ShowArticle) *NoMore SetEqual(a=%NV%OLDA%) SetEqual(b=%NV%OLDB%) Say(&12&&CR&This is the last article.) SecPause(1) if (%nv%curart%)>(%nv%highart%) then if (%nv%curart%)>(1) then goto (prev) endif ;setnv(curart=%nv%highart%) Goto(ShowArticle) *MakeNewHeader Zap(%nv%newstemp%HDR%VAR%A.%VAR%B,%NV%DATE%) AppendTo(%nv%newstemp%HDR%VAR%A.%VAR%B,%NV%TITLE%) Ret *fromssc setnv(fromssc=) say ( |) goto(getit) EDITDEFCTL@Say(&CR&&12&If your terminal supports at least ANSI graphics, when you enter a) Say(message, you will be asked if you wish to use the Full-Screen Message Editor.) Say(If you select &14&Yes&12& to the following question, you will automatically use) Say(the Full-Screen Editor every time you enter a message. If you select &14&No&12&,) Say(the BBS will ask you each time.) Say(&CR&&15&Do you want to always use the Full-Screen Editor? (&12&Y&15&/&12&N&15&)*) Back(4) YesNoAsk(&14&*) SetEqual(/FLAG2=%RESP%) Log(--,Changed Default Full Screen Editor to %RESP%) Return BADPHONECTL/*BadPhone ClearScr Log(!!,User (%NAME%) entered Duplicate Info) Zap(MSG.%NODE%,This message has been automatically generated for you by Powerboard.) AppendTo(MSG.%NODE%,) AppendTo(MSG.%NODE%,A new user attempted to logon to the BBS with the name %NAME%) AppendTo(MSG.%NODE%,at %TIME% on %DATE%. The phone number this user entered (/:PHONE/)) AppendTo(MSG.%NODE%,duplicated the phone number of a user currently on record.) AppendTo(MSG.%NODE%,) AppendTo(MSG.%NODE%,If you wish to allow this user to re-logon to your BBS as a new user) AppendTo(MSG.%NODE%,with the same phone number, you must edit the PHONES.DAT file in your) AppendTo(MSG.%NODE%,main BBS directory and remove the phone number in question.) SeekUser(%SYSOP%) If(%ARESP%)=(No) then SetNv(tousernum=1) SetNv(tousernum=%NDNUMB%) ;if the sysop cannot be located in user file, assume sysop is user #1 InitTxt Import(MSG.%NODE%,,1,100) Writemsg(1,%SYSOP%,Powerboard BBS,New Logon With False Info,%nv%tousernum%,Yes,0,No,,) Kill(MSG.%NODE%) Display(display\dphone) quitbbs KILLNODECTLHloadsub(control\exitwip.ctl) if (%MULTI%)=(TRUE) then goto (start) say(&CR&&11&Sorry, %FNAME%, this system is not running the Multinode version of the) say(Powerboard BBS Package.&CR&&CR&&3&If you feel this would be a good addition to the BBS, please contact) say(your Sysop, %SYSOP%.&CR&) enter goto (doret) *start loadsub(control\macros\mwho.ctl) menuask(%CRON%&CR&&3&Please enter the number of the &11&node &3&to disconnect&12&: &15&*) if (%resp%)=(<CR>) then goto (doret) killnode(%resp%) *doret if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return NODEDOWNCTL(loadsub(control\exitwip.ctl) if (%MULTI%)=(TRUE) then goto (start) say(&CR&&11&Sorry, %FNAME%, this system is not running the Multinode version of the) say(Powerboard BBS Package.&CR&&CR&&3&If you feel this would be a good addition to the BBS, please contact) say(your Sysop, %SYSOP%.&CR&) enter goto (doret) *start loadsub(control\macros\mwho.ctl) menuask(%CRON%&CR&&3&Please enter the number of the &11&node &3&to shut down&12&: &15&*) if (%resp%)=(<CR>) then goto (doret) nodedown(%resp%) *doret setnv(wipe=) setnv(wipmode=1) return VIEWLOGSCTLloadsub(control\exitwip.ctl) loadsub(control\macros\mwho.ctl) menuask(&CR&&3&Node to view? (ENTER=Quit)&12&: &15&*) if (%RESP%)=() then goto (dor) closecall VIEW(logs\callers.%resp%) opencalle enter *dor if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return QUOTECTL ;subroutine for quoting from original message in message reply *Quote linefeed(1) lView(%pbtemp%quote.%NODE%,11,3) *Encore cMenuAsk (%CRON%&CR&&3&Enter the first line of the message you want to quote&12&: &15&*) SetEqual(s=%RESP%) If (%RESP%)=(<CR>) Then return ; will go to "add" label upon routine ; SetEqual(s=1) ; SetEqual(/resp=1) ; comment out first line of block and uncomment out ; the above two lines to make <CR> default to line 1 endif If (%RESP%)<(1) then Say(&CR&&12&That is an invalid line number!) Goto(Encore) endif *EncoreDeux cMenuAsk (%CRON%&3&Enter the last line of the message to quote&12&: &15&*) SetEqual(t=%RESP%) If (%RESP%)=(<CR>) Then SetEqual(t=%var%s) NotIf(&s)<=(&t) then Say(&CR&&12&The last line number must be greater than or equal to the first line number!&CR&) SecPause(1) Goto(EncoreDeux) endif Lines(%pbtemp%Quote.%NODE%) If(&t)>(%ARESP%) then SetEqual(t=%ARESP%) ;if greater than maxline in original SetEqual(a=%MAXLINE%) Import (%pbtemp%quote.%NODE%,=> ,%var%s,%var%t) ;import text from quote.%NODE% tmp file AddVar(%MAXLINE%+-%VAR%A=a) ;display full quote when adding to message ;AddVar(%VAR%T+-%VAR%S=a) ;display full quote when adding to message AddVar(%VAR%A+1=a) Return CNFNEWSCTLÆseek(areas\news/:lastmsg/.asc) ifnottrue(return) fDate(areas\news/:lastmsg/.asc) if (/:last/)=(%ARESP%) then goto (dd) CmpDate(/:LAST/,%ARESP%) IfTrue(return) *dd seek(areas\news/:lastmsg/.wip) if (%nv%wipmode%)=(1) then ifnottrue(goto(nowip)) display(areas\news/:lastmsg/) return *nowip loadsub(control\exitwip.ctl) display(areas\news/:lastmsg/) setnv(wipmode=1) return SENDCTL═if (%nv%wipmode%)=(1) then loadmem(control\macros\sendwip.ctl) ;SEND.CTL ;subroutine for sending private messages from one node to another outside chat *Filter SetEqual(a=%NV%QUEUE%) DeQueue(a) SetNv(queue=%VAR%A) SetEqual(/RESP=%ARESP%) If(%RESP%)=() then Goto(ChooseNode) Number(%RESP%) IfNotTrue(Goto(ErrAndClear)) SetNv(ToNode=%RESP%) *Check setequal(w=0) size(%CPAT%whoison.dat) divvar(%ARESP%/131=y) if(%NV%TONODE%)>(&y) then Goto(ErrAndClear) ; if invalid node # nodestat(%nv%ToNode%) If(%NAVAIL%)<>(Y) then Goto(NotAvailable) *SendIt If(%NV%QUEUE%)=() then Goto(GetSendText) SetNv(j=%VAR%J) NiceEqual(j=%NAME%) SetNv(sendtext=(Pvt Msg)%NODE% %VAR%J: %NV%QUEUE%) Seek(%CPAT%%NODE%.%NV%TONODE%) IfNotTrue(Kill(%CPAT%%NODE%.%NV%TONODE%) AppendTo(%CPAT%%NODE%.%NV%TONODE%,%NV%SENDTEXT%) SetEqual(j=%NV%J%) SetNv(j=) SetNv(sendtext=) SetNv(queue=hi) SetNv(tonode=) Say(&4&-- Private Message Sent --) ;SecPause(1) Return *ChooseNode LoadSub(control\macros\mwho.ctl) Say(&CR&&15&Node to send message to?&12&: &14&*) MenuAsk(%CRON%*) If(%RESP%)=(<CR>) then Return Number(%RESP%) IfNotTrue(goto(errandclear)) SetNv(tonode=%RESP%) *Check2 setequal(w=0) size(%CPAT%whoison.dat) divvar(%ARESP%/131=y) if(%NV%TONODE%)>(&y) then Goto(ErrAndClear) ; if invalid node # nodestat(%nv%ToNode%) If(%NAVAIL%)<>(Y) then Goto(NotAvailable) *GetSendText Say(&CR&&15&Text to send&12&: &14&*) Ask(%CRON%*) If(%RESP%)=(<CR>) then Return SetNv(queue=%RESP%) Goto(SendIt) *NotAvailable Say(&CR&&12&That node is currently unavailable.&CR&) SetNv(queue=) SecPause(1) Return *ErrAndClear Say(&CR&&12&The node number you specified is invalid.&CR&) SetNv(queue=) SecPause(1) Return EDITCCSCTLY;subroutine to edit Carbon Copy list *EditCCs ClearScr ;If(%NV%CC1%)=() then Return SetEqual(q=1) Say(&CR&&11 RECIPIENTS) Say(&7&------------------------------------------) If(%NV%CCs%)<(1) then Goto(NoMore) DO SetEqual(j=nv%ccnum%VAR%Q%) SetEqual(i=nv%cc%VAR%Q%) Prc(%%VAR%J) SetEqual(j=%ARESP%) Prc(%%VAR%I) SetEqual(i=%ARESP%) If(&i)=() then Goto(IncItAndGo) ;if blank, it has been deleted by the Edit CC List option Say(&3&%VAR%Q: &14&%VAR%I) *IncItAndGo Inc(q) If(&q)>(%NV%CCs%) then Goto(NoMore) LOOP *NoMore Say(&CR&&15&(&12&A&15&)dd or (&12&D&15&)elete a User to/from CC List (ENTER=quit)? &14&*) MenuKey(%CRON%) BigNiceSay(A:Add,D:Delete) BigIf(A:Add,D:Delete) If(%RESP%)=(<CR>) then Say() SetNv(high=) Return endif Goto(BadSel) *Delete SetNv(high=%VAR%Q) ; total # of CCs on list Say(&CR&&15&Enter the number of the user you would like to remove from the list: &14&*) Cask(%CRON%*) If(%RESP%)=(<CR>) then Goto(EditCCs) Number(%RESP%) IfNotTrue(Goto(BadNumber)) If(%RESP%)>=(%NV%HIGH%) then Goto(BadNumber) If(%RESP%)<(1) then Goto(BadNumber) SetEqual(q=%RESP%) SetEqual(j=NV%CC%VAR%Q%) Prc(%%VAR%J) SetNv(tempname=%ARESP%) If(&q)=(%NV%HIGH%) then Goto(AfterLoop) ; if deleting tail element *LittleLoop Inc(q) SetEqual(j=nv%ccnum%VAR%Q%) SetEqual(i=nv%cc%VAR%Q%) Dec(q) Prc(%%VAR%J) SetNv(ccnum%VAR%Q=%ARESP%) Prc(%%VAR%I) SetNv(cc%VAR%Q=%ARESP%) Inc(q) If(&q)<(%NV%HIGH%) then Goto(LittleLoop) *AfterLoop SetNv(ccnum%NV%HIGH%=) SetNv(cc%NV%HIGH%=) SetEqual(a=%NV%CCs%) Dec(a) SetNv(CCs=%VAR%A) ; decrease total # of cc's SetNv(high=) Say(&CR&&14&%NV%TEMPNAME% has been removed from the list!&CR&) SetNv(tempname=) ; SecPause(1) Goto(EditCCs) *BadNumber Say(&CR&&12&That is an invalid number! Please try again...) SecPause(1) Goto(EditCCs) *Add Setfill([ENTER] quits) CMenuAsk(%NOCR%%CRON%&CR&&15&CC: &14&*) ;NotIf(/:EXPERT/)=(Y) then CMenuAsk (%NOCR%%CRON%&3&To whom do you wish to send a copy of this message?&12&: &15&*) ;If(/:EXPERT/)=(Y) then CMenuAsk (%NOCR%%CRON% &3&CC&12&: &15&*) If(%RESP%)=([ENTER] QUITS) then Say( *) Say() If(%RESP%)=([ENTER] QUITS) then Goto(EditCCs) If(%RESP%)=(<CR>) then Goto(EditCCs) If(%RESP%)=(%NV%ADDRESSEE%) then Goto(AlreadyOnList) SetEqual(/nvcheck=%RESP%) Jump(CheckDup) SetEqual(q=%NV%Q%) SetNv(q=) SetEqual(/nvcheck=) killperc if (%RESP%)=(SYSOP) then jump (sysn) if (%resp%)=(<CR>) then linefeed(1) if (%RESP%)=(<CR>) then Return SetEqual(j=nv%ccnum%VAR%Q%) SetEqual(x=nv%cc%VAR%Q%) setequal(/nvcc%var%q=%RESP%) setequal(/nvccnum%var%q=0) if (%RESP%)=(?) then goto (finduser) SetEqual(/nvme=%VAR%B) SetEqual(b=%RESP%) SetEqual(/nvccnum%var%q=-1) SetEqual(/nvcc%var%q=%VAR%B) SetEqual(b=%NV%ME%) SetEqual(/nvme=) setequal(g=%NAME%) upcase(g) seekfile(bad.to,%VAR%G;%RESP%) iftrue(return) Prc(%%VAR%J) Prc(%%VAR%X) SeekUser(%ARESP%) ifnottrue(goto (notfound2)) setequal(/nvccnum%var%q=%NDNUMB%) SetNv(CCs=%VAR%Q) ; up # of CCs by one ;Say(#%VAR%Q added!) Goto(editccs) *NormFin Say(AT NORM FIN!!!) Prc(%%VAR%X) SeekUser(%ARESP%) ifnottrue(goto (notfound2)) *Back2 setequal(/nvccnum%var%z=%NDNUMB%) SetNv(CCs=%VAR%Q) *BadSel Say(&CR&&12&Invalid selection! Please try again...&CR&) Goto(NoMore) *alreadyonlist Say(&CR&&12&The last carbon copy request has been cancelled-- this message is already) Say(being sent to *) NiceSay(%RESP%.&CR&) Enter Goto(editccs) *CheckDup SetNv(q=%VAR%Q) If(%NV%CCs%)<(2) then Ret SetEqual(q=1) *Dup2 SetEqual(x=nv%cc%VAR%Q%) Prc(%%VAR%X) If(%ARESP%)=(%NV%CHECK%) then Goto(AlreadyOnList) Inc(q) If(&q)>(&z) then Ret Goto(dup2) *notfound2 if (%RESP%)=(@NAME@) then goto(back2) If (%MSGFNET%)=(Y) then goto (back2) ;don't bother confirming the name if the messages is being sent by NetMail. say(&CR&&14&That name could not be found. ) setequal(c=0) say(&15&Would you like to send a carbon copy to this person anyway? (&12&Y&15&/&12&N&15&)&14&*) back(4) yesnoask(*) if (%RESP%)=(Yes) then setequal(/nvccnum%var%q=%NDNUMB%) SetNv(CCs=%VAR%Q) goto(editccs) endif ;AddVar(%VAR%Z+-1=z) SetNv(ccnum%VAR%Q=0) SetNv(cc%VAR%Q=) Say(&12&&CR&The last carbon copy request has been cancelled.&CR&) Enter goto (EditCCs) QWKPERSCTL Say(&15&Would you like the BBS to only include personal messages addressed to you in) Say(your .QWK offline mail packets? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) SetEqual(/flag3=%RESP%) Log(--,Changed .QWK Packet Personal Mail Only to %RESP%) return SELECTCTL╘loadsub(control\exitwip.ctl) *TheTop clearscr say(&CR&&14&Accessable Message Areas As Of %DATE% On %BBS%&CR&) say(&11##:Message Area Name :Area Flags) say(---:------------------------------------------------------------:----------&15&) spause(4) mList ;list message areas say(&11&---:------------------------------------------------------------:----------&15&) say( Total %MAXAREA%&CR&) say(&12&Flags: *=Selected, P=Pvt Ok, F=Force Pvt, N=Force Pub, B=Netmail, I=Ignored&CR&) *bk menuask(%CRON%&3&Please enter area number to change or &11&(Q)uit&12&: &15&*) bigif(<CR>:quit,q:quit,d:ds,s:sl) number(%RESP%) iftrue(goto (DoArea)) loadsub(control\macros\badsel.ctl) goto (bk) *ds desel goto (bk) *sl sel goto (bk) *DoArea linefeed(1) msel(%RESP%) goto (TheTop) *quit if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return QWKSCANCTL▀Say(&12&By default, Powerboard's offline mail packets will include a listing of all) Say(new files on the BBS since the last time you scanned for new files. If you do) Say(not want this list in your mail packet, you can skip it by specifying Yes at) Say(the following prompt.) Say(&CR&&15&Would you like to skip the new files scan? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) SetEqual(/flag4=%RESP%) Log(--,Changed .QWK Packet Skip New Files Scan to %RESP%) return MCDATRCTLSeek(%CPAT%MCHAT.DAT) IfNotTrue(Goto(NotThere)) Size(%CPAT%MCHAT.DAT) SetNv(totbytes=%ARESP%) SetEqual(d=1) ; start from first byte ;AddVar(%NODE%+-1=a) ; offset of 1 from node ;MultVar(%VAR%A*29=d) ;Inc(d) *ShowIt Fread(%CPAT%MCHAT.DAT,%VAR%D,1,e) If(&e)=(N) then AddVar(%VAR%D+29=d) Goto(CheckAndLoop) endif DivVar(%VAR%D/29=c) Inc(c) SetLen(c=3) Say(&7&%VAR%C *) AddVar(%VAR%D+1=d) Fread(%CPAT%MCHAT.DAT,%VAR%D,25,e) Say(&14&%VAR%E *) AddVar(%VAR%D+25=d) Fread(%CPAT%MCHAT.DAT,%VAR%D,3,e) ;Say(&15&%VAR%E) Rtrim(e) If(%VAR%E)=(0) then Say(&15& Main) Goto(AddOn) endif Seek(%CPAT%CHAN%VAR%E.DAT) If(%ARESP%)<>(Yes) then Say(&15&%VAR%E) If(%ARESP%)=(Yes) then Jump(GetChanName) *AddOn AddVar(%VAR%D+3=d) Inc(r) If(&r)>=(/:SCREENLEN/) then If(%NV%PAUSE%)<>(N) then PausePrompt SetNv(pause=%RESP%) SetEqual(r=1) If(%ARESP%)=(STOP) then Goto(back) endif *CheckAndLoop If(&d)<(%NV%TOTBYTES%) then Goto(ShowIt) SetNv(totbytes=) ;Enter Return *NotThere Say(&CR&&12&ERROR: Could not locate chat data file!!!!&CR&) SecPause(1) Return *GetChanName Inpline(%CPAT%CHAN%VAR%E.DAT,1) If(%ARESP%)<>(P) then Say(&12& Pvt &15&%ARESP%'s) Ret endif Inpline(%CPAT%CHAN%VAR%E.DAT,2) Say(&15& %ARESP%) Ret MCFREECTL~;this subroutine searches through the MCHAT.DAT file to determine the nearest ;available channel with no other users in it. The result is stored in ;%NV%CHANNEL% SetEqual(d=1) *Loopy Seek(%CPAT%CHAN%VAR%D.DAT) IfNotTrue(Goto(SetIt)) Inc(d) If(&d)<=(255) then Goto(loopy) SetNv(channel=-1) ; reports no available channels Return *SetIt SetNv(channel=%VAR%D) Return MCDATCTLd; fwrite(filename,start_pos,# of bytes,variable letter) ; fread(filename,start_pos,# of bytes,variable letter) ; do a setlen(# of bytes) before fwriting Seek(%CPAT%MCHAT.DAT) IfNotTrue(Goto(Nothing)) Size(%CPAT%MCHAT.DAT) ;each record will be 29 bytes (1=in_chat?, 25=user name, 3=channel #) AddVar(%ARESP%+1=a) ; starting byte for new record at end SetNv(startbyte=%VAR%A) DivVar(%ARESP%/29=a) ; A will be # of records currently in file *CheckPad If(%NODE%)<=(%VAR%A) then AddVar(%NODE%+-1=d) MultVar(%VAR%D*29=d) Inc(d) SetNv(startbyte=%VAR%D) Goto(WriteInfo) ; if no need to pad endif AddVar(%NODE%+-%VAR%A=b) Dec(b) ; B is the number of records to pad (not including the dest) If(&b)=(0) then MultVar(%VAR%A*29=d) Inc(d) SetNv(startbyte=%VAR%D) Goto(WriteInfo) endif ;Say(&CR&Padding %VAR%B records...) SetEqual(c=%VAR%A) *LittleLoop SetEqual(e=N) SetLen(e=1) Fwrite(%CPAT%MCHAT.DAT,%NV%STARTBYTE%,1,e) SetEqual(d=%NV%STARTBYTE%) AddVar(%VAR%D+1=d) SetNv(startbyte=%VAR%D) SetEqual(e= ) SetLen(e=25) Fwrite(%CPAT%MCHAT.DAT,%NV%STARTBYTE%,25,e) SetEqual(d=%NV%STARTBYTE%) AddVar(%VAR%D+25=d) SetNv(startbyte=%VAR%D) SetLen(e=3) Fwrite(%CPAT%MCHAT.DAT,%NV%STARTBYTE%,3,e) SetEqual(d=%NV%STARTBYTE%) AddVar(%VAR%D+3=d) SetNv(startbyte=%VAR%D) Dec(b) ; one fewer record to pad If(&b)>(0) then Goto(LittleLoop) Goto(WriteInfo) *Nothing ;Say(File Not There!) SetNv(startbyte=1) SetEqual(a=0) Goto(CheckPad) *WriteInfo SetEqual(e=Y) SetLen(e=1) Fwrite(%CPAT%MCHAT.DAT,%NV%STARTBYTE%,1,e) SetEqual(d=%NV%STARTBYTE%) AddVar(%VAR%D+1=d) SetNv(startbyte=%VAR%D) SetEqual(e=%NAME%) SetLen(e=25) Fwrite(%CPAT%MCHAT.DAT,%NV%STARTBYTE%,25,e) SetEqual(d=%NV%STARTBYTE%) AddVar(%VAR%D+25=d) SetNv(startbyte=%VAR%D) SetEqual(e=%NV%CURCHAN%) SetLen(e=3) Fwrite(%CPAT%MCHAT.DAT,%NV%STARTBYTE%,3,e) Return MCEMPTYCTL╒ *WhoIsHere SetNv(oneperson=No) ; at least one person in channel? Size(%CPAT%MCHAT.DAT) SetEqual(c=%ARESP%) SetEqual(d=2) *MyLoop3 Fread(%CPAT%mchat.dat,%VAR%D,25,e) Rtrim(e) SetNv(mcname=%VAR%E) AddVar(%VAR%D+25=d) Fread(%CPAT%mchat.dat,%VAR%D,3,e) Rtrim(e) If(&e)<>(%NV%CURCHAN%) then Goto(IncAndBack) If(%NV%MCNAME%)=(%NAME%) then Goto(IncAndBack) SetNv(oneperson=Yes) Return *IncAndBack AddVar(%VAR%D+4=d) If(&d)<(&c) then Goto(MyLoop3) Return DELCHKCTLv;checks to see if channel should be deleted/removed from list *DelChk *KillPublic ;Say(OLDCHAN=%NV%OLDCHAN%) InpLine(%CPAT%chan%nv%oldchan%.dat,2) SetNv(channame=%ARESP%) Kill(%CPAT%public.2) Lines(%CPAT%public.dat) SetNv(lines=%ARESP%) SetNv(removed=No) Inpopen(%CPAT%public.dat) DO Inpread SetNv(line=%ARESP%) SetNv(z=%VAR%Z) SetNv(w=%VAR%W) SetEqual(z=%ARESP%) Find(&z,,) AddVar(%ARESP%+-1=w) Get(&z,1,%VAR%W) SetEqual(z=%NV%Z%) SetEqual(w=%NV%W%) SetNv(z=) SetNv(w=) ; Say(ARESP=%ARESP% CHANNAME=%NV%CHANNAME%) If(%ARESP%)<>(%NV%CHANNAME%) then AppendTo(%CPAT%public.2,%NV%LINE%) SetNv(removed=Yes) endif EOFLOOP Inpclose SetNv(line=) SetNv(channame=) Kill(%CPAT%public.dat) Rename(%CPAT%public.2,%CPAT%public.dat) SetNv(lines=) SetNv(removed=) If(%NV%LINES%)=(1) then If(%NV%REMOVED%)=(Yes) then Kill(%CPAT%public.dat) Lines(%CPAT%public.dat) If(%ARESP%)=(1) then Inpline(%CPAT%public.dat,1) SetEqual(y=%ARESP%) Rtrim(y) If(&y)=() then Kill(%CPAT%public.dat) endif Kill(%CPAT%chan%NV%OLDCHAN%.DAT) SetNv(oldchan=) SetNv(oneperson=) Return TIMECTL>if (%nv%wipmode%)=(1) then goto (wip) ;TIME.CTL ;Shows the current date and time Say(&CR&&14&It is currently *) NiceTime(%TIME%) Say(%ARESP% on *) NiceDate(%DATE%) Say(%ARESP%) Say(You have /:LEFT/ minutes remaining&CR&) enter Return *wip setnv(norefresh=1) setequal(c=13~It is currently ) nicetime(%time%) setequal(c=%var%c%aresp% on ) nicedate(%date%) setequal(c=%var%c%aresp%. You have /:left/ minutes remaining.~Time~1~) jump (okbox0) return *okbox0 Jump (wipc) *tryagain4 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (tryagain4) ret *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(200) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs README Scott--- All these files belong in the CONTROL\MACROS\ directory. I included the CONAME.CTL as an example of how the global commands and online help are generally implemented. The only differences really are when there are multiple prompts in a control file. In that case, the *OlHelp and *Anywhere labels don't have a Goto at the end, but rather a Ret. Also... The %nv%helpoption% variable is NOT set at the *OlHelp label. Both Goto and nvhelpoption setting are handled in a block if command.... - Doug MCPADCTL╖*MCPAD SetEqual(e=N) SetLen(e=1) Fwrite(%CPAT%MCHAT.DAT,%NV%STARTBYTE%,1,e) SetEqual(d=%NV%STARTBYTE%) AddVar(%VAR%D+1=d) SetNv(startbyte=%VAR%D) SetEqual(e= ) SetLen(e=25) Fwrite(%CPAT%MCHAT.DAT,%NV%STARTBYTE%,25,e) SetEqual(d=%NV%STARTBYTE%) AddVar(%VAR%D+25=d) SetNv(startbyte=%VAR%D) SetLen(e=3) Fwrite(%CPAT%MCHAT.DAT,%NV%STARTBYTE%,3,e) SetEqual(d=%NV%STARTBYTE%) AddVar(%VAR%D+3=d) SetNv(startbyte=%VAR%D) Return INCHATCTLè*InChat Size(%CPAT%MCHAT.DAT) SetEqual(c=%ARESP%) SetNv(inchat=No) SetEqual(d=2) *MyLoop2 Fread(%CPAT%mchat.dat,%VAR%D,25,e) Rtrim(e) SetNv(mcname=%VAR%E) AddVar(%VAR%D+25=d) Fread(%CPAT%mchat.dat,%VAR%D,3,e) Rtrim(e) SetNv(inchan=%VAR%E) If(%NV%MCNAME%)=(%NV%SEARCH%) then SetNv(inchat=Yes) return endif *GoOn AddVar(%VAR%D+4=d) If(&d)<(&c) then Goto(MyLoop2) Return MWHOWIPCTL!setnv(liste=) if (%MULTI%)=(TRUE) then goto (start) setequal(c=13~Sorry, %FNAME%, this system is not running the Multinode version of the) setequal(c=%var%c Powerboard BBS Package. If you feel this would be a good addition to the BBS, please contact your Sysop, %SYSOP%.~Not a Multinode System~1~) jump (okbox0) goto (ewho) *start Seek(%CPAT%whoison.dat) If (%ARESP%)=(No) Then return log(--,Viewed other node users (WHO)) *thetop setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=multtmpl)) *initBox setequal(c=14~listbox~1000~16~) jump (wipc) goto (searchWhoIsOn) *GetResp0 setequal(c=0A~) jump (wipc) flushout jump (getInput) writeln(Response from user: "%resp%") if (%nv%wiprestreq%)=(1) then goto (thetop) if (%resp%)=(Exit) then goto (ret0) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) if (%var%b)=(-1) then goto (conts) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif ;if (%nv%wipc%)=(searchtext) then setNv(key=%nv%Ctext%) *NoCmnd setnv(wtxt=) goto (getResp0) *SearchWhoIsOn setequal(w=0) setnv(curnode=%var%w) *conts size(%CPAT%whoison.dat) divvar(%ARESP%/131=y) setequal(u=0) setequal(w=%nv%curnode%) *stl4 inc(u) inc(w) nodestat(%var%w) setequal(t=%var%w) setlen(t=5) setequal(z=%var%t) setequal(t=%NAVAIL%) setlen(t=2) setequal(z=%var%z%var%t) setequal(t=%NNAME%) setlen(t=25) setlen(t=26) setequal(z=%var%z%var%t) setequal(t=%NFROM%) setlen(t=25) setlen(t=26) setequal(z=%var%z%var%t) setequal(t=%NBAUD%) setlen(t=7) setequal(z=%var%z%var%t%NACTIVITY%) writeln(%var%z) setequal(c=07~listbox~%var%z~) jump (wipc) If (&w)=>(&y) then goto (ewho) if (%var%u)=>(16) then goto (donef) goto (stl4) *ewho if (%nv%liste%)=(1) then goto (donef) setnv(liste=1) setequal(c=13~You have reached the end of the list.~End of List~1~) jump (okbox0) goto (donef) *okbox0 Jump (wipc) *tryagain4 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (tryagain4) ret *notext setequal(c=13~No text was specified. Please enter some text to search for and try again or click "quit" to exit.~No Text Specified~1~) jump (okbox0) goto (getresp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(200) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *getinput writeln(Waiting for input from remote user.) setequal(y=180) jump (wipask) if (%aresp%)<>(24) then ret loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) jump (wipask) if (%aresp%)=(24) then loadmem(control\timeout.ctl) ret *donef setnv(curnode=%var%w) write(Updating list box on user's screen ... ) setequal(c=07~listbox~-1~) jump (wipc) setequal(c=0F~listbox~Who Is Online~1~1~2~) jump (wipc) setequal(c=0F~RecCount~16~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) setequal(c=0A~) jump (wipc) writeln(Done!) goto(getresp0) *wipask loadsub(control\wipask.ctl) ret *ret0 setnv(liste=) return SENDTXTCTLc*SendTxt Size(%CPAT%mchat.dat) SetEqual(c=%ARESP%) SetEqual(d=2) *MyLoop2 Fread(%CPAT%mchat.dat,%VAR%D,25,e) Rtrim(e) SetNv(mcname=%VAR%E) AddVar(%VAR%D+25=d) Fread(%CPAT%mchat.dat,%VAR%D,3,e) ;Addvar(%VAR%D+3=d) Rtrim(e) SetNv(mcchan=%VAR%E) ;Say(MCCHAN=!%NV%MCCHAN%! DESTCHAN=!%NV%DESTCHAN%! MCNAME=!%NV%MCNAME%!) If(%NV%MCCHAN%)=(%NV%DESTCHAN%) then If(%NV%MCNAME%)=(%NAME%) then If(%NV%SELF%)=(No) then Goto(GoOn) ;If(%NV%LIST%)=(Yes) then Goto(InList) If(%NV%SENDTO%)<>(%NV%MCNAME%) then If(%NV%SENDTO%)<>(N) then Goto(GoOn) DivVar(%VAR%D/29=e) Inc(e) ; Say(Appending to %NODE%.%VAR%E,%NV%MESSAGE%) AppendTo(%CPAT%%NODE%.%VAR%E,%NV%MESSAGE%) endif *GoOn AddVar(%VAR%D+4=d) If(&d)<(&c) then Goto(MyLoop2) Goto(Back) *InList Inpopen(%CPAT%chan%NV%DESTCHAN%.DAT) do inpread If(%ARESP%)=(%NV%MCNAME%) then Goto(YesInList) EOFLOOP Inpclose Goto(GoOn) *YesInList Inpclose DivVar(%VAR%D/29=e) Inc(e) AppendTo(%CPAT%%NODE%.%VAR%E,%NV%MESSAGE%) Goto(GoOn) *Back SetNv(mcname=) SetNv(mcchan=) SetNv(message=) SetNv(list=) SetNv(self=) SetNv(sendto=) Return FLISTUCTL│numb(Yes) setequal(y=5) clearscr setequal(k=0) display(%FILPATH%header) ;if (%CD%)=(No) then display(%FILPATH%header) ;if (%CD%)=(Yes) then display(%CDPath%/:lastdown/\header) if (%Y%)=(25) then goto (blist) if (%Y%)=(23) then goto (blist) addvar(%y%+-1=k) ;addvar(%y%+0=k) spause(%var%k) setequal(K=0) *blist jump(pauseprompt1) if (%CD%)=(No) then fdisp(%FILPATH%files.bbs,12,15,7,11,3,%var%k) if (%CD%)=(Yes) then fdisp(%CDPath%/:lastdown/\files.bbs,12,15,7,11,3,%var%k) ;if (%CD%)=(No) then fsearch(%FILPATH%files.bbs,12,15,7,11,3,,1,1,%var%k) ;if (%CD%)=(Yes) then fsearch(%CDPath%/:lastdown/\files.bbs,12,15,7,11,3,,1,1,%var%k) spause(0) if (%ARESP%)=(No) then goto (err) Defpause ($7$&0&[Send more text?]$0$&3& (&11&S&3&)top, (&11&N&3&)onstop or (&11&C&3&)ontinue?&12&: &7&) DefPif (s:stop,n:nonstop) ;defpause($7$&0&END$0$&3& &11&V&3&:View, &11&D&3&:Download, &11&T&3&:Tag, &11&H&3&:Help or &11&ENTER&3& to Quit?&12&: &7&) ;defPif(v:view2,h:fhlp,t:tag2,d:down2) setequal(/nonstop=0) ;pauseprompt jump(pauseprompt) numb(No) Return *fhlp setequal(k=%ARESP%) jump(pauseprompt) display(display\help\lst,/:SEC/) goto (blist2) *err jump(pauseprompt) display(display\NOFILES) enter Numb(No) Return *view2 setequal(k=%ARESP%) loadsub(control\macros\zview.ctl) goto (blist2) *tag2 setequal(k=%ARESP%) loadsub(control\macros\numbtag.ctl) goto (blist2) *down2 setequal(k=%ARESP%) loadsub(control\macros\down.ctl) selfarea(/:Lastdown/) goto (blist2) *blist2 spause(0) clearscr goto (blist) *Pauseprompt1 DefPause($7$&0&More$0$&3& &11&S&3&:Stop, &11&N&3&:Nonstop, &11&V&3&:View, &11&D&3&:Download, &11&T&3&:Tag, &11&H&3&:Help or &11&C&3&:Continue?&12&: &7&) defPif(s:stop,n:nonstop,v:view2,h:fhlp,t:tag2,d:down2) ret *Pauseprompt DefPause($7$&0&Send more text$0$&3& &11&S&3&:Stop, &11&N&3&:Nonstop or &11&C&3&:Continue?&12&: &7&) defPif(s:stop,n:nonstop) ret SENDWIPCTL ;SENDWIP.CTL ;subroutine for sending private messages from one node to another outside chat *thetop setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=sendinst)) *getresp0 setequal(c=0A~) Jump (wipc) jump (getinput) if (%nv%wiprestreq%)=(1) then goto (thetop) writeln(Response from user: "%resp%") if (%resp%)=(Send) then goto (Check) if (%resp%)=(/WHO) then goto (whoc) if (%resp%)=(quit) then return if (%resp%)=(Exit) then return setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif if (%nv%wipc%)=(node) then setNv(tonode=%nv%Ctext%) if (%nv%wipc%)=(message) then setnv(queue0=%nv%Ctext%) *NoCmnd setnv(wtxt=) goto (getResp0) *Check setequal(w=0) size(%CPAT%whoison.dat) divvar(%ARESP%/131=y) if (%nv%tonode%)<(1) then goto (errandclear) if(%NV%TONODE%)>(&y) then Goto(ErrAndClear) ; if invalid node # nodestat(%nv%ToNode%) If(%NAVAIL%)<>(Y) then Goto(NotAvailable) *SendIt SetNv(j=%VAR%J) NiceEqual(j=%NAME%) SetNv(sendtext=(Pvt Msg)%NODE% %VAR%J: %NV%queue0%) Seek(%CPAT%%NODE%.%NV%TONODE%) IfNotTrue(Kill(%CPAT%%NODE%.%NV%TONODE%) AppendTo(%CPAT%%NODE%.%NV%TONODE%,%NV%SENDTEXT%) SetEqual(j=%NV%J%) SetNv(j=) SetNv(sendtext=) SetNv(queue0=) SetNv(tonode=) writeln(Instant Message Sent.) setequal(c=13~Your instant message has been sent.~Message Sent~1~) jump (okbox0) return *NotAvailable writeln(That node is currently unavailable.) setequal(c=13~That node is currently unavailable.~Node Unavailable~1~) jump (okbox0) SetNv(queue0=) goto (getresp0) *ErrAndClear writeln(The node number specified is invalid.) setequal(c=13~The node number you specified is invalid.~Invalid Node~1~) jump (okbox0) SetNv(queue0=) goto (getresp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(200) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *wipask loadsub(control\wipask.ctl) ret *getinput writeln(Waiting for input from remote user.) setequal(y=180) jump (wipask) if (%aresp%)<>(24) then ret loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) jump (wipask) if (%aresp%)=(24) then loadmem(control\timeout.ctl) ret *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *whoc loadsub(control\macros\mwhowip.ctl) goto(thetop) ANYWHERECTLm;ANYWHERE.CTL ;commands that may be accessed from anywhere on the BBS *RemoveAttChar SetNv(u=%VAR%U) AddVar(%ARESP%+-1=u) Get(%RESP%,2,%VAR%U) SetEqual(/RESP=%ARESP%) ; set response var to global command ;SetNv(queue=%ARESP%) ;Say(Set QUEUE to %ARESP%) ;SetEqual(a=%NV%QUEUE%) ;DeQueue(a) ;SetNv(queue=%VAR%A) ;SetEqual(/RESP=%ARESP%) SetEqual(u=%NV%U%) SetNv(u=) *Process BigIf(TIME:Time,WHO:Who,BYE:Bye,X:Bye,G:Bye,SEND:SendPvt,S:SendPvt,FIND:Find,?:OLHELP) Goto(BSel) *Time LoadSub(control\macros\time.ctl) Return *Who EnufSec(20) IfNotTrue(Goto(Bsel)) LoadSub(control\macros\mwho.ctl) Return *Bye LoadSub(control\macros\bye.ctl) Return *SendPvt ;private messages = NODEFROM.NODETO LoadSub(control\macros\send.ctl) SetNv(queue=) ; clear queue Return *Find Say() LoadSub(control\macros\find.ctl) SetNv(queue=) ; clear queue Return *Olhelp SetNv(atprompt=No) SetNv(helpoption=0) LoadSub(olhelp\olhelp.ctl,goto(disp)) Return *bSel LoadSub(control\macros\badsel.ctl) ;Clear Stack on Error! ;---PowerStak Block 3 setequal(/nvqueue=) ;---PowerStak Block 3 End Return FLISTWIPCTL&inpclose setnv(CurFMode=1) jump (dispscr) numb(No) clearscr setnv(fn=%filpath%files.bbs) if (%CD%)=(Yes) then setnv(fn=%CDPATH%/:lastdown/\files.bbs) write(Retrieving file listing for area #/:lastdown/...) listlog() zap(%pbtemp%wiplist.%node%) lines(%nv%fn%) setnv(flines=%aresp%) listlog(%pbtemp%wiplist.%Node%) setequal(k=1) fdisp(%nv%fn%,12,15,7,11,3,%var%k,%nv%flines%) listlog() writeln(Done!) goto (initbox) *thetop jump (dispscr) *initBox setequal(c=14~listbox~%nv%flines%~%nv%high%~) jump (wipc) jump (dispCurMode) goto (listfa) *GetResp0 if (%nv%wiprestreq%)=(1) then goto (thetop) writeln(got to getresp0) setequal(c=0A~) jump (wipc) goto (getInput) *bgi writeln(Response from user: "%resp%") if (%nv%wiprestreq%)=(1) then goto (thetop) if (%resp%)=(A) then goto (dotag) if (%resp%)=(Tag) then goto (tagmode) if (%resp%)=(Download) then goto (downmode) if (%resp%)=(Download Mode) then goto (downmode) if (%resp%)=(View) then goto (viewmode) if (%resp%)=(Exit) then goto (ret4) if (%resp%)=(quit) then goto (ret4) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) if (%var%b)=(-1) then goto (more) setequal(/resp=%var%b) inpclose inpline(%pbtemp%wiplist.%node%,%var%b) setequal(d=%aresp%) writeln(b: "%var%b" aresp from inpline: "%aresp%") inpopen(%pbtemp%wipfile.%node%,4) inpread(%nv%d%) if (%var%d)=() then goto (getresp0) get(&d,1,1) if (%aresp%)=( ) then goto (getresp0) find(&d, ) writeln(aresp from find: "%aresp%") if (%aresp%)=(0) then goto (getresp0) get(&d,1,%aresp%) setequal(d=%aresp%) rtrim(d) if (%nv%curfmode%)=(1) then goto (tagit) if (%nv%curfmode%)=(2) then goto (downloadit) if (%nv%curfmode%)=(3) then goto (viewit) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif ;if (%nv%wipc%)=(searchtext) then setNv(key=%nv%Ctext%) *NoCmnd setnv(wtxt=) goto (getResp0) *listfa seek(%pbtemp%wiplist.%node%) ifnottrue(goto(donef)) inpopen(%pbtemp%wiplist.%node%,4) setnv(d=0) setnv(m=0) setnv(e=0) setnv(f=0) *more setequal(u=0) setequal(d=%nv%d%) setequal(m=%nv%m%) setequal(e=%nv%e%) setequal(f=%nv%f%) fendif(donef) *stLoop inc(u) inc(d) inpread writeln(%aresp%) setequal(c=07~listbox~%aresp%~) jump (wipc) if (%var%u)>(%nv%high%) then goto (donef) fendif(done) goto(stloop) *done inpclose cnvtk(%var%e) setequal(c=07~listbox~ -- End of File Listing --~) jump (wipc) goto (donef) *none setequal(c=07~listbox~There are no files in this area.~) jump (wipc) goto (donef) *NoMore if (%nv%high%)=() then goto (ga0) ; writeln(No more matches to the text you specified could be found.) ; setequal(c=13~No more matches to the text you specified could be found.~End of List~1~) ; jump (okbox0) goto (donef) ; goto (getresp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(50) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *getinput writeln(Waiting for input from remote user.) setequal(y=180) writeln(loading wipask.ctl) loadsub(control\wipask.ctl) writeln(back from wipask.ctl (1)) if (%aresp%)<>(24) then goto (bgi) writeln(loading time warning.) loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) writeln(loading wipask.ctl (2)) loadsub(control\wipask.ctl) writeln(back from wipask.ctl (2)) if (%aresp%)=(24) then loadmem(control\timeout.ctl) writeln(going back to bgi) goto (bgi) *donef ;inc(d) setnv(d=%var%d) setnv(m=%var%m) setnv(e=%var%e) setnv(f=%var%f) write(Updating list box on user's screen ... ) setequal(c=07~listbox~-1~) jump (wipc) setequal(c=0F~listbox~Change File Area~1~1~2~) jump (wipc) setequal(c=0F~RecCount~20~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) setequal(c=0A~) jump (wipc) writeln(Done!) goto(getresp0) *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *notext writeln(No text was specified. Enter some text to search for and try again...) setequal(c=13~No text was specified. Please enter some text to search for and try again or click "quit" to exit.~No Text Specified~1~) jump (okbox0) goto (getresp0) *doAdd loadsub(control\macros\tag-wip.ctl) goto(thetop) *okbox0 Jump (wipc) *tryr0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (tryr0) ret *ret4 setnv(d=) inpclose return *dispscr setnv(high=21) setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=flist)) ret *dispCurMode if (%nv%curfMode%)<>(1) then goto (not1) setequal(c=07~status~Now in TAG MODE. To tag a file, click on the filename you want in the box below:~) jump(wipc) *not1 if (%nv%curfmode%)<>(2) then goto (not2) setequal(c=07~status~Now in DOWNLOAD MODE. To download a file, click on the filename you want in the box below:~) jump (wipc) *not2 if (%nv%curfmode%)<>(3) then ret setequal(c=07~status~Now in VIEW MODE. To view a file, click on the filename you want to view in the box below:~) goto (wipc) *tagmode setnv(curfmode=1) jump (dispcurmode) goto (getresp0) *downmode setnv(curfmode=2) jump (dispcurmode) goto (getresp0) *viewmode setnv(curfmode=3) jump (dispcurmode) goto (getresp0) *downloadit setnv(filename=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) loadsub(control\exitwip.ctl) loadsub(control\macros\down.ctl) setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (thetop) ;goto (InitBox) *tagit setnv(filename=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) loadsub(control\macros\tag-wip.ctl,goto(dotag)) setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (getresp0) ;goto (InitBox) *viewit setnv(key=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) upcase(d) find(&d,.TXT) if (%aresp%)>(0) then goto (txt) find(&d,.ASC) if (%aresp%)>(0) then goto (txt) loadsub(control\exitwip.ctl) setnv(filename=%nv%key%) loadsub(control\macros\zview.ctl) *bk setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (thetop) ;goto (InitBox) *txt loadsub(control\macros\freadwip.ctl) goto (bk) PAGECTLjif (%nv%wipmode%)=(1) then loadmem(control\macros\wippage.ctl) say(&14&&CR&Paging %SYSOP% for a chat, one moment please...*) checkhours if (%ARESP%)=(No) then goto (badhours) if (%CHAT%)=(No) then goto (notHere) seek(%pbtemp%psys.%node%) iftrue(goto (psys)) *beginPage appendto(%pbtemp%psys.%node%,) setequal(n=OK) savescreen(%pbtemp%scr1.%NODE%) inpopen (pagebell.dat) localwrite(1,1,7,1,┌──────────────────────────────────────────────────────────────────────────────┐) localwrite(1,2,7,1,│ │) localwrite(1,3,7,1,└──────────────────────────────────────────────────────────────────────────────┘) localwrite(2,2,14,1, Paging SysOp ... Press (SPACE) to accept; (ESC) to toggle page ) if (%ARESP%)=(ERROR) then goto (nothere) setequal(h=0) do if (&n)=(PROB) then goto (absound) inpread sound (%ARESP%) *absound localkey(1) if (%ARESP%)=( ) then goto (spacehit) if (%aresp%)=() then goto (tpg) eofloop *nothere restscreen(%pbtemp%scr1.%NODE%) inpclose requested (Chat Requested) display (display\page) log(--,Chat with Sysop Requested) loadsub(control\macros\comment.ctl) return *spacehit restscreen(%pbtemp%scr1.%NODE%) linefeed(1) kill(%pbtemp%psys.%node%) inpclose ;norest ;dont restore the screen when chat ends! ;sysopchat loadsub(control\macros\ssc.ctl,goto(noRest)) return *badhours requested (Chat Requested) display (display\hours) log(--,Chat with Sysop Requested) loadsub(control\macros\comment.ctl) return *tpg tpage ;toggle page goto (nothere) *psys lines(%pbtemp%psys.%node%) notif (%aresp%)=(3) then goto (beginpage) goto (nothere) mment.ctl) return *tpg tpage ;toggle page goto (nothere) *psys lines(%pbtemp%psys.%node%) notif (%aresp%)=(3) then goto (beginpage) goto (nothere) ZVIEWCTLsetnv(wipe=) loadsub(control\exitwip.ctl) DefPause($7$&0&[Send more text?]$0$&3& (&11&S&3&)top, (&11&N&3&)onstop or (&11&C&3&)ontinue?&12&: &7&) DefPif(s:stop,n:nonstop) ; a value of () for queue %VAR%Q means it is empty ;NotIf(%VAR%Q)=() then Goto (dequeue) *Disp2 *sv Say(&CR&&15&Enter name of the file to view (ENTER=Quit)&12&: &12&( )&14&*) Back(13) if (%nv%filename%)<>() then setwrap(%nv%filename%) setnv(filename=) endif MenuAsk(%NOCR%%CRON%%LEN%12%*) *Process if (%RESP%)=(<CR>) then goto (ret) Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) AddDef(.%DEFEXT%) SeekFall(%RESP%) If (%ARESP%)=(INVALID) Then goto (invfn) if (%ARESP%)=(No) then goto (nothere) If (%ARESP%)=(NOT ENOUGH) Then goto (notenuf) SelFarea(%ARESP%) Kill(%pbtemp%ZipInfo.txt) Say(&CR&&CR&&15&Reading the archive file...*) setequal(e=%RESP%) seek(zipview.bat) ifnottrue(goto (intview)) Exec(ZipView.bat %FILPATH%%var%e) say(Done!) *stview Seek(%pbtemp%zipinfo.txt) IfNotTrue (goto (cont)) inpopen(%pbtemp%zipinfo.txt) do inpread get (%ARESP%,1,7) notif (%ARESP%)=() then if (%ARESP%)=( Length) then loadmem (control\zipview.ctl) eofloop *odisp inpclose view (%pbtemp%zipinfo.txt) goto (cont) *cont linefeed(1) Enter SelFarea(/:LASTDOWN/) goto (ret0) *badsel LoadSub(control\macros\badsel.ctl) goto (ret0) *invfn Display(Display\INVALID) FlushOut SelFarea(/:LASTDOWN/) Enter goto (ret00 *nothere Display(display\notfnd) SelFarea(/:LASTDOWN/) goto (ret0) *Notenuf Say(&CR&) Display (display\fbadsel) SelFarea(/:LASTDOWN/) goto (ret0) *invfn Display(Display\INVALID) flushout selfarea(/:LASTDOWN/) Enter goto (fname) *notenuf Display (Display\fbadsec) selfarea(/:LASTDOWN/) goto (ret0) *NotHere Display(Display\notfnd) goto (fname) *ret linefeed(1) goto (ret0) *intview len(%var%e) upcase(e) addvar(%aresp%+-2=f) get(&e,%var%f,3) if (%aresp%)=(ZIP) then goto (ZIP) ;;*** SHOULD BE LOADEXEC BELOW NOT EXEC *** exec(av %FILPATH%%var%e >%pbtemp%zipinfo.txt,) say(Done!) seek(%pbtemp%zipinfo.txt) ifnottrue(goto(cantview)) size(%pbtemp%zipinfo.txt) if(%ARESP%)=(0) then Goto(TextFile) view(%pbtemp%zipinfo.txt) goto (cont) *zip exec(pkzip -v %FILPATH%%var%e >%pbtemp%zipinfo.txt,) say(Done!) goto (stview) *cantview say(&CR&&12&The selected file cannot be viewed. It is apparently not an archive file nor) say(a text file.&15&&CR&) enter selfarea(/:lastdown/) return *TextFile Say(&CR&&12&The selected file is a text file. Loading text viewer...&7&) setequal(/resp=%var%e) LoadMem(control\macros\fread.ctl,goto(Here)) *dequeue LoadSub(CONTROL\MACROS\dequeue.CTL) If(%VAR%L)=(0) then Goto(Disp2) Goto(Process) *enqueue SetEqual(/RESP=%VAR%E) LoadSub(CONTROL\MACROS\enqueue.CTL) Goto(dequeue) *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=23) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(Sv) *ret0 if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return WIPPAGECTLƒsetequal(c=07~Bar~Paging the System Operator (SysOp) for a chat. One moment, please...~) jump (wipc) setequal(c=0A~) jump (wipc) setnv(norefresh=1) checkhours if (%ARESP%)=(No) then goto (badhours) if (%CHAT%)=(No) then goto (notHere) seek(%pbtemp%psys.%node%) iftrue(goto (psys)) *beginPage appendto(%pbtemp%psys.%node%,) setequal(n=OK) savescreen(%pbtemp%scr1.%NODE%) inpopen (pagebell.dat) localwrite(1,1,7,1,┌──────────────────────────────────────────────────────────────────────────────┐) localwrite(1,2,7,1,│ │) localwrite(1,3,7,1,└──────────────────────────────────────────────────────────────────────────────┘) localwrite(2,2,14,1, Paging SysOp ... Press (SPACE) to accept; (ESC) to toggle page ) if (%ARESP%)=(ERROR) then goto (nothere) setequal(h=0) do if (&n)=(PROB) then goto (absound) inpread sound (%ARESP%) *absound localkey(1) if (%ARESP%)=( ) then goto (spacehit) if (%aresp%)=() then goto (tpg) eofloop *nothere restscreen(%Pbtemp%scr1.%NODE%) inpclose requested (Chat Requested) setequal(c=07~Bar~ ~) jump (wipc) setequal(c=0A~) jump (wipc) *tryagain0 writeln(The SysOp is not currently available for chat. Leave a comment?) setequal(c=13~The SysOp is not currently available for a chat. Would you like to leave a comment?~SysOp Not Available~2~) jump (wipc) *gi0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) *tryr setequal(r=%resp%) ascii if (%aresp%)=(21) then goto (tryagain0) if (%aresp%)=(6) then len(%var%r) if (%aresp%)=(1) then goto (gi0) get(&r,2,1000) setequal(/resp=%aresp%) goto (tryr) endif if (%resp%)<>(2) then return log(--,Chat with Sysop Requested) loadsub(control\macros\comment.ctl,goto (stc0)) return *spacehit restscreen(%pbtemp%scr1.%NODE%) linefeed(1) kill(%pbtemp%psys.%node%) inpclose loadsub(control\macros\ssc.ctl,goto(noRest)) return *badhours inpclose requested (Chat Requested) setequal(c=07~Bar~ ~) jump (wipc) *tryagain0 writeln(You've paged the sysop during hours they can't be reached. Would you like to leave a comment?) setequal(c=13~You've paged the sysop during hours they can't be reached. Would you like to leave a comment?~SysOp Not Available~2~) jump (wipc) *gi0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) *tryr setequal(r=%resp%) ascii if (%aresp%)=(21) then goto (tryagain0) if (%aresp%)=(6) then len(%var%r) if (%aresp%)=(1) then goto (gi0) get(&r,2,1000) setequal(/resp=%aresp%) goto (tryr) endif if (%resp%)<>(2) then return log(--,Chat with Sysop Requested) loadsub(control\macros\comment.ctl,goto (stc0)) return *tpg tpage ;toggle page goto (nothere) *psys lines(%Pbtemp%psys.%node%) notif (%aresp%)=(3) then goto (beginpage) goto (nothere) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(200) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs DEQUEUECTL┘DeQueue(q) SetEqual(/RESP=%ARESP%) Len(%VAR%Q) SetEqual(l=%VAR%Q) Return *Dequeue Len(%VAR%Q) SetEqual(l=%VAR%Q) If(%ARESP%)=(0) then Goto(Disp2) ; double protection against empty queue SetEqual(l=%ARESP%) ; %VAR%L temporarily stores number of characters in queue %VAR%Q Find(%VAR%Q, ) If(%ARESP%)=(0) then SetEqual(/RESP=%VAR%Q) If(%ARESP%)=(0) then Goto(Clearqueue) AddVar(%ARESP%+-1=t) Get(%VAR%Q,1,%VAR%T) MenuEqual(/RESP=%ARESP%) AddVar(%VAR%T+1=t) AddVar(%VAR%L+-%VAR%T=l) AddVar(%VAR%T+1=t) If(%VAR%L)=(0) then Goto(ClearQueue) Get(%VAR%Q,%VAR%T,%VAR%L) SetEqual(q=%ARESP%) ; Dequeues first command from queue %VAR%Q ;;Goto(Process) Return *ClearQueue SetEqual(q=) ;Goto(Process) Return WIPFINDCTL∞;USERFIND by Doug Vermes with modifications by Scott Brown *thetop setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=userfind)) *initBox setequal(c=14~listbox~1000~11~) jump (wipc) *GetResp0 setequal(c=0A~) jump (wipc) jump (getInput) writeln(Response from user: "%resp%") if (%nv%wiprestreq%)=(1) then goto (thetop) if (%resp%)=(begin) then goto (userfind) if (%resp%)=(quit) then return setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) if (%var%b)=(-1) then goto (s2) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif if (%nv%wipc%)=(searchtext) then setNv(key=%nv%Ctext%) *NoCmnd setnv(wtxt=) goto (getResp0) *UserFind setequal(c=14~listbox~1000~11~) jump (wipc) SetActivity (User Find) *Main *Stk ;%NV%KEY% is Search Key if (%nv%key%)=() then goto (notext) log (--,UserFind for:%nv%key%) writeln(Searching for: "%nv%key%") SetEqual(n=1) ;user number to search from *s2 SetEqual(y=0) *Searching SeekUserP(%NV%KEY%,%VAR%N) ifnottrue(goto (nomore)) AddVar(%NDXREC%+1=n) Inc(y) Loaduser (%NDNUMB%) SetEqual(a=\:NAME\) SetLen(a=23) setequal(z=%var%a) SetEqual(a=\:FROM\) SetLen(a=26) setequal(z=%var%z%var%a) setequal(z=%var%z\:LAST\) writeln(%var%z) setequal(c=07~listbox~%var%z~) jump (wipc) if (%var%y)=>(11) then goto (donef) Goto(Searching) *NoMore writeln(No more matches to the text you specified could be found.) setequal(c=13~No more matches to the text you specified could be found.~End of List~1~) jump (okbox0) goto (donef) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(200) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *wipask loadsub(control\wipask.ctl) ret *getinput writeln(Waiting for input from remote user.) setequal(y=180) jump (wipask) if (%aresp%)<>(24) then ret loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) jump (wipask) if (%aresp%)=(24) then loadmem(control\timeout.ctl) ret *donef write(Updating list box on user's screen ... ) setequal(c=07~listbox~-1~) jump (wipc) setequal(c=0F~listbox~Find A User~1~1~2~) jump (wipc) setequal(c=0F~RecCount~11~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) setequal(c=0A~) jump (wipc) writeln(Done!) goto(getresp0) *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *notext writeln(No text was specified. Enter some text to search for and try again...) setequal(c=13~No text was specified. Please enter some text to search for and try again or click "quit" to exit.~No Text Specified~1~) jump (okbox0) goto (getresp0) CHGCTLaif (%nv%wipmode%)=(1) then loadmem(control\macros\wipchg.ctl) *tt DeLimit( ,;) ;---PowerStak Block 1 len(%nv%queue%) notif (%aresp%) = (0) then setequal(/resp=%nv%queue%) goto(stk) ;If something in the stack then... endif ;---PowerStak Block 1 End--- Display(display\CHG,/:SEC/) *ThePrompt CAsk(%CRON%&CR&&15&Which conference would you like? (&14&ENTER&15&=Quit)&12&: &14&*) ;---PowerStak Block 2 *stk setequal(a=%resp%) DEQUEUE(a) setequal(/nvqueue=%var%a) setequal(/resp=%aresp%) ;---PowerStak Block 2 End--- if (%Resp%)=(<CR>) then return *sela Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) If(%ARESP%)=(/) then Goto(Anywhere) MenuEqual(/RESP=%RESP%) Number(%RESP%) If (%ARESP%)=(No) Then Return setequal(b=%resp%) CmpValO(%MAXAREA%,%var%b) IfTrue (Return) SelArea(%var%b) EnufSec(%AREASEC%) IfTrue(Goto (cnt)) SelArea(/:LASTMSG/) enufsec(%areasec%) ifnottrue(setequal(/lastmsg=1)) ifnottrue(selarea(1)) Say(&CR&&14&You don't have a high enough security level for that area.&CR&) enter Return *cnt Display(areas\welc%var%b) ListFile(areas\farea%var%b) ;upload areas are AREAS\FAU%VAR%B if (%FAREA%)=(AREAS\FAREA%var%b) then goto (fsetup) goto (seled) *fsetup selfarea(1) setequal(/lastdown=1) *seled Say(Area #%var%b (&15&%AREANAME%&11&) is now selected!&CR&&7&) if (%AREAPVT%)=(Y) then say(Private mail is allowed in this area.) if (%AREAPVT%)=(N) then say(No private mail is allowed in this area.) if (%AREAFPUB%)=(Y) then say(All messages are forced public.) if (%AREAFPVT%)=(Y) then say(All messages are forced private.) if (%MSGNET%)=(Y) then say(Netmail is supported in this area.) if (%MSGFNET%)=(Y) then say(All mail in this area is Netmail.) linefeed(1) log(--,Joined Conference #%var%b) enter SetEqual(/LASTMSG=%var%b) seek(areas\news/:lastmsg/.asc) iftrue(loadsub(control\macros\cnfnews.ctl)) Return *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=7) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(ThePrompt) *Anywhere Len(%RESP%) If(%ARESP%)<(2) then Goto(Bsel) LoadSub(control\macros\anywhere.ctl) Goto(ThePrompt) ENQUEUECTL»*Enqueue NotIf(%VAR%Q)=() then Goto(Concat) MenuEqual(q=%RESP%) ;Enqueue all commands onto queue Return *Concat Combine( +%RESP%=s) Combine(%VAR%Q+%VAR%S=q) Return MOVECTL√setnv(wipe=) loadsub(control\exitwip.ctl) SetNv(Beginmsg=/:LASTMSG/) SetNV(Begindn=/:LASTDOWN/) if (%graphics%)=(RIP) then clearscr *FName Say(&CR&&15&Move a file from an (&12&U&15&)pload or (&12&D&15&)ownload Area? &14&*) MenuKey(%CRON%*) If(%RESP%)=(<CR>) then Say() goto (ret0) Endif BigNiceSay(U:U,D:D) BigIf(U:UpArea,D:GetFName) Goto(Fname) *GetFName say(&CR&&15&Enter name of the file to move (ENTER=Quit)&12&: &12&( )&14&*) back(13) menuask(%CRON%%LEN%12%*) If (%RESP%)=(<CR>) Then goto (ret0) Get(%RESP%,1,1) If(%ARESP%)=(?) then SetNv(helpoption=32) Jump(olhelp) goto(GetFname) endif adddef(.%DEFEXT%) say(&CR&&11&Please wait!... We're searching for the file...*) seekfall(%RESP%) if (%ARESP%)=(INVALID) then goto (invfn) if (%ARESP%)=(No) then goto (nothere) if (%ARESP%)=(NOT ENOUGH) then goto (notenuf) if (%RESP%)=(%ARESP%) then goto (moveerr) selFarea(%ARESP%) setequal(l=%RESP%) inpopen(%FAREA%.bbs) if (%ARESP%)=(ERROR) then goto (moveerr) setequal(u=1) say(Found!&7&) setequal(j=%FILPATH%) inpclose ;inpread Say(&CR&&15&Would you like to move this file to a different conference? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If(%RESP%)=(Yes) then Jump(ChgConference) *Ques1 Say(&CR&&15&Move this file to an (&12&U&15&)pload or (&12&D&15&)ownload Area? &14&*) MenuKey(%CRON%*) BigNiceSay(U:U,D:D) BigIf(U:UpArea2,D:DownArea2) If(%RESP%)=(<CR>) then goto (ret0) Goto(Ques1) say(&CR&&3&Would you like to list the file areas? &9&[ ]&14&*) back(4) YesNoAsk(*) if (%resp%)=(No) then goto (stopinp) do say(%var%u - %ARESP%) inpread(2) inc(u) eofloop *stopinp ;inpclose menuask(%CRON%&CR&&3&Enter the number of the directory you want to move this to&12&: &15&*) if (%resp%)=(<CR>) then goto (moveerr) say(&CR&&14&Please wait, moving file...*) selfarea(%RESP%) if (%FILPATH%)=(&j) then goto (moveerr) move2(%var%l,%var%j,%FILPATH%,%FILAREA%,%FAREA%) resetlist listfile(%FAREA%) *endmove ListFile(AREAS\FAREA%NV%BEGINMSG%) SetEqual(/lastmsg=%NV%BEGINMSG%) selfarea(%NV%BEGINDN%) SetEqual(/lastdown=%NV%BEGINDN%) SetNv(beginmsg=) SetNv(begindn=) goto (ret0) *invfn Display(Display\INVALID) flushout selfarea(/:LASTDOWN/) Enter goto (fname) *notenuf Display (Display\fbadsec) selfarea(/:LASTDOWN/) goto (ret0) *NotHere Display(Display\notfnd) goto (fname) *moveerr say(&CR&&14&The directory you specify is where the file already resides!&CR&) selfarea(/:lastdown/) SecPause(1) Goto(EndMove) goto (ret0) *UpArea ListFile(areas\fau/:LASTMSG/) If(%FAREA%)<>(AREAS\FAU/:LASTMSG/) then Goto(NoUpAreas) display(%FAREA%) Say(&CR&&12&Please note that other conferences may have different upload areas.) Say(&CR&&15&Which upload area would you like to list?&12&: &14&*) MenuAsk(%CRON%*) If(%RESP%)=(<CR>) then goto (ret0) Number(%RESP%) IfNotTrue(Goto(InvUp)) SelFArea(%RESP%) SetEqual(/LASTUP=%RESP%) LoadSub(control\macros\flistu.ctl) Enter Goto(GetFname) *InvUp Say(&CR&&12&Invalid upload area number! Please try again...) SecPause(1) Goto(UpArea) *NoUpAreas Say(&CR&&12&There are no upload areas in this conference!) SecPause(1) Goto(Fname) *DownArea ListFile(areas\farea/:LASTMSG/) If(%FAREA%)<>(AREAS\FAREA/:LASTMSG/) then Goto(NoDownAreas) display(%FAREA%) Say(&CR&&12&Please note that other conferences may have different file areas.) Goto(GetFname) *NoDownAreas Say(&CR&&12&There are no download areas in this conference!) SecPause(1) Goto(Fname) *InvDn Say(&CR&&12&Invalid upload area number! Please try again...) SecPause(1) Goto(DownArea) *UpArea2 ListFile(areas\fau/:LASTMSG/) If(%FAREA%)<>(AREAS\FAU/:LASTMSG/) then Goto(NoUpAreas2) display(%FAREA%) Say(&CR&&12&Please note that other conferences may have different upload areas.) Goto(StopInp) *NoUpAreas2 Say(&CR&&12&There are no upload areas in the destination conference!) SecPause(1) Goto(Ques1) *DownArea2 ListFile(areas\farea/:LASTMSG/) If(%FAREA%)<>(AREAS\FAREA/:LASTMSG/) then Goto(NoDownAreas2) display(%FAREA%) Say(&CR&&12&Please note that other conferences may have different file areas.) Goto(Stopinp) *NoDownAreas2 Say(&CR&&12&There are no download areas in the destination conference!) SecPause(1) Goto(Ques1) *ChgConference SetNv(moving=Yes) LoadSub(control\macros\chg.ctl) SetNv(moving=) Ret *OlHelp SetNv(AtPrompt=Yes) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Ret *ret0 if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return MCHATCTL_ setnv(wipe=) loadsub(control\exitwip.ctl) delimit( ,;) DefPause ($7$&0&[Send more text?]$0$&3& (&11&S&3&)top, (&11&N&3&)onstop or (&11&C&3&)ontinue?&12&: &7&) DefPif (s:stop,n:nonstop) if (%MULTI%)=(TRUE) then goto (start) say(&CR&&11&Sorry, %FNAME%, this system is not running the Multinode version of the) say(Powerboard BBS Package.&CR&&CR&&3&If you feel this would be a good addition to the BBS, please contact) say(your Sysop, %SYSOP%.&CR&) enter goto (ret0) *start setactivity (Entering Chat) SetWho1(&7&) SetWho2(&11&) SetWho3(&3&) SetWho4(&10&) SetWho5(&15&) ;---PowerStak Block 1 ;len(%nv%queue%) ;notif (%aresp%) = (0) then ; setequal(/resp=%nv%queue%) ; SetNv(stack=Yes) ; goto(stk) ;If something in the stack then... ;endif ;---PowerStak Block 1 End--- ; ;display(display\chatconf) ;menuask(&3&Please select a chat conference&12&: &15&*%CRON%) ;---PowerStak Block 2 *stk ;setequal(a=%resp%) ;DEQUEUE(a) ;setequal(/nvqueue=%var%a) ;setequal(/resp=%aresp%) ;Say(RESP=%RESP%) ;---PowerStak Block 2 End--- ;if (%RESP%)=(<CR>) then goto (ret0) ;number(%RESP%) ;ifnottrue(goto (badsel)) ;setequal(a=%RESP%) setequal(c=%NAME%) setlen(c=20) setequal(d=%FROM%) setlen(d=21) ;---PowerStak Block 1b ;len(%nv%queue%) ;notif (%aresp%) = (0) then ; setequal(/resp=%nv%queue%) ; Setnv(stack=Yes) ; goto(stk2) ;If something in the stack then... ;endif ;;---PowerStak Block 1b End--- ;display(display\chatopt) ;loadsub(control\macros\mwho.ctl) ;menuask(&3&Nodes you would like to chat with, separated by spaces &11&(A=All)&12&: &15&*%CRON%) ;deleted a "%MIN%1%" from above line.. It contradicts "%CRON%". ;---PowerStak Block 2 ;*stk2 ;setequal(b=%resp%) ;DEQUEUE(b) ;setequal(/nvqueue=%var%b) ;setequal(/resp=%aresp%) ;;---PowerStak Block 2 End--- ;if (%RESP%)=(<CR>) then return ;Say(RESP=%RESP%) ;setequal(b=%RESP% %NODE%) display(display\stchat) ;If(%NV%STACK%)=(Yes) then ; Say(&CR&&14&Entering Chat... Type /? for Help) ; Say(&CR&&10&It is %TIME% on %DATE% at %BBS%. You have /:LEFT/ minutes left.*) ; endif SetNv(Stack=) ;SetNv(a=%VAR%A) SetNv(curchan=0) LoadSub(control\macros\mcdat.ctl) SetEqual(a=%NV%A%) SetNv(a=) ;SetNv(chatwhom=%VAR%B) *DoTheChat CarrierL(Y) ;mChat(%nv%curchan% -1) mChat(0 -1) ; ARESP=24 = kb timeout ; ARESP=10 = time ran out If(%ARESP%)=(24) then Goto(KbTimeOut) If(%ARESP%)=(10) then Goto(OutOfTime) CarrierL(N) goto (ret0) *RetToChat Say(&15&*) ; restore color 15 chat LoadSub(control\macros\mcdat.ctl) ; update data file Mchat(%NOENTERMSG%%NV%CURCHAN% -1) goto (ret0) *all If(%NV%STACK%)<>(Yes) then display(display\stchat) If(%NV%STACK%)=(Yes) then Say(&CR&&14&Entering Chat... Type /? for Help) Say(&CR&&10&It is %TIME% on %DATE% at %BBS%. You have /:LEFT/ minutes left.*) endif AppendTo(CHAT\MCHAT.DAT,%NAME%,%VAR%A) ; user_name,channel_number SetNv(chatwhom=-1) SetNv(curchan=%VAR%A) mchat(%var%a -1) goto (ret0) *badsel loadsub(control\macros\badsel.ctl) ;Clear Stack on Error! ;---PowerStak Block 3 setequal(/nvqueue=) ;---PowerStak Block 3 End goto (ret0) *NoCarrier LoadMem(control\mnchat\quit.) QuitBBS *KBTimeout Display(display\timeout) Goto(NoCarrier) *OutOfTime Display(display\notime) Goto(NoCarrier) *ret0 if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return CHANGE-WCTL╛*thetop setnv(high=22) setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=changef)) *initBox setequal(c=14~listbox~%maxfarea%~22~) jump (wipc) goto (listfa) *GetResp0 setequal(c=0A~) jump (wipc) jump (getInput) writeln(Response from user: "%resp%") if (%nv%wiprestreq%)=(1) then goto (thetop) if (%resp%)=(Help) then goto (olhelp) if (%resp%)=(Exit) then goto (ret4) if (%resp%)=(quit) then goto (ret4) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) if (%var%b)=(-1) then goto (more) setequal(/resp=%var%b) goto (sa) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif ;if (%nv%wipc%)=(searchtext) then setNv(key=%nv%Ctext%) *NoCmnd setnv(wtxt=) goto (getResp0) *listfa inpclose inpopen(%farea%.bbs,4) setequal(d=0) setnv(d=0) *more setequal(d=%nv%d%) setequal(u=0) *rt inc(d) ;fendif(nomore) inpread setequal(n=%aresp%) fendif(nomore) inpread setequal(a=%aresp%) find(&a,,) if (%aresp%)=(0) then goto (rt) addvar(%aresp%+-1=w) get(&a,1,%var%w) if (%aresp%)>(%sec%) then goto (rt) setequal(e=%var%d) setlen(e=5) inc(u) setequal(c=07~listbox~%var%e %var%n~) writeln(%var%e %var%n) if (%nv%high%)<>() then goto (nh) if (%var%u)=(%resp%) then goto (ga0) *nh setnv(d=%var%d) if (%nv%high%)<>() then jump (wipc) setequal(d=%nv%d%) if (%nv%high%)=() then goto (rt) if (%var%u)>(%nv%high%) then goto (donef) goto (rt) *NoMore if (%nv%high%)=() then goto (ga0) ; writeln(No more matches to the text you specified could be found.) ; setequal(c=13~No more matches to the text you specified could be found.~End of List~1~) ; jump (okbox0) goto (donef) ; goto (getresp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(50) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *wipask loadsub(control\wipask.ctl) ret *getinput writeln(Waiting for input from remote user.) setequal(y=180) jump (wipask) if (%aresp%)<>(24) then ret loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) jump (wipask) if (%aresp%)=(24) then loadmem(control\timeout.ctl) ret *donef ;inc(d) setnv(d=%var%d) write(Updating list box on user's screen ... ) setequal(c=07~listbox~-1~) jump (wipc) setequal(c=0F~listbox~Change File Area~1~1~2~) jump (wipc) setequal(c=0F~RecCount~20~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) setequal(c=0A~) jump (wipc) writeln(Done!) goto(getresp0) *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *notext writeln(No text was specified. Enter some text to search for and try again...) setequal(c=13~No text was specified. Please enter some text to search for and try again or click "quit" to exit.~No Text Specified~1~) jump (okbox0) goto (getresp0) *sa inpclose number(%resp%) ifnottrue(goto (bds)) CmpValo(%MAXFAREA%,%RESP%) IfTrue(goto (bds)) addvar(%resp%+0=d) setequal(/resp=%var%d) setnv(high=) goto (listfa) *ga0 setequal(/resp=%var%d) inpclose SelFarea(%RESP%) CmpVal(%sec%,%FILSEC%) IfTrue(goto (bds)) SetEqual(/LASTDOWN=%RESP%) ; if (%CD%)=(Yes) then display(%CDPath%/:lastdown/\welc) ; if (%CD%)=(No) then Display(%FILPATH%welc) writeln(Area #%RESP%: %FILNAME% is now selected!) setequal(c=13~Area #%RESP%: %FILNAME% is now selected!~Area Selected~1~) jump (okbox0) log(--,Changed to %FILNAME% file area) writeln(Would you like to list this file area?) *listf0 setequal(c=13~Would you like to list this file area?~List Area?~2~) jump (wipc) *gi0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) *tryr setequal(r=%resp%) ascii if (%aresp%)=(21) then goto (listf0) if (%aresp%)=(6) then len(%var%r) if (%aresp%)=(1) then goto (gi0) get(&r,2,1000) setequal(/resp=%aresp%) goto (tryr) endif if (%resp%)=(2) then loadmem(control\macros\flist.ctl) goto (ret4) *bds loadmem(control\macros\badsel.ctl) *nofs display(display\NOFSEC) selfarea(/:lastdown/) goto (ret4) *OlHelp loadsub(control\exitwip.ctl) SetNv(AtPrompt=Yes) SetNv(Helpoption=19) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) goto (thetop) *okbox0 Jump (wipc) *tryr0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (tryr0) ret *ret4 setnv(d=) inpclose return GRAPHCTLL*GetGraph Say(&15&Use (&12&A&15&)NSI, ASCI(&12&I&15&), (&12&W&15&)IP, or (&12&R&15&)IP Graphics Mode?&12&: &14&*) SetEqual(b=1) *GetAnswer MenuKey(%CRON%) If(%RESP%)=(<CR>) then Return BigNiceSay(A:ANSI,I:ASCII,W:WIP,R:RIP) BigIf(A:ANSI,I:ASCII,W:WIP,R:RIP,?:OLHELP) Inc(b) If(&b)>(3) then Return ; give them 3 tries and then pretend they did nothing Goto(GetAnswer) *More Log(--,Changed Graphics Mode) return *ANSI loadsub(control\exitwip.ctl) SetEqual(/graphics=ANSI) Goto(More) *ASCII loadsub(control\exitwip.ctl) SetEqual(/graphics=ASCII) Goto(More) *WIP SetEqual(/graphics=WIP) SetNv(wipmode=1) Goto(More) *RIP loadsub(control\exitwip.ctl) SetEqual(/graphics=RIP) Goto(More) *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=137) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(GetGraph) USRBADCTL┐*NewBad freespace(%CDRIVE%:) if (%ARESP%)<(%MINSPACE%) then log(!!,Drive space low.) quitbbs endif appendto(badnames.bbs,%name%) log(--,User attempted log on with false info.) if (%resp%)<>(%RESP%) then Log(!!,%NAME%'s Reason: "%RESP%") Zap(MSG.%NODE%,This message has been automatically generated for you by Powerboard.) AppendTo(MSG.%NODE%,) AppendTo(MSG.%NODE%,A attempted to logon to the BBS with the name %NAME%) AppendTo(MSG.%NODE%,at %TIME% on %DATE%. The information entered by this user was incorrect.) if (%resp%)<>() then AppendTo(MSG.%NODE%,) AppendTo(MSG.%NODE%,%RESP%) endif SeekUser(%SYSOP%) SetNv(tousernum=%NDNUMB%) If(%ARESP%)=(No) then SetNv(tousernum=1) ;if the sysop cannot be located in user file, assume sysop is user #1 InitTxt Lines(MSG.%NODE%) Import(MSG.%NODE%,,1,%ARESP%) Writemsg(1,Powerboard BBS,%SYSOP%,New Logon With False Info,%nv%tousernum%,Yes,0,No,,) Kill(MSG.%NODE%) quitbbs NEWFWIPCTL setnv(d=) setnv(flines=0) zap(%pbtemp%wiplist.%node%) setnv(carea=0) setnv(newf=newf) inpclose setnv(CurFMode=1) *tt0 if (%nv%newf%)<>(newf) then jump (dispscr) if (%nv%newf%)=(newf) then goto (thetop) Jump (uparea) goto (initbox) *thetop jump (dispscr) *initBox setequal(c=14~listbox~%nv%flines%~%nv%high%~) jump (wipc) jump (dispCurMode) if (%nv%newf%)<>(newf) then goto (listfa) *GetResp0 if (%nv%wiprestreq%)=(1) then goto (thetop) writeln(got to getresp0) setequal(c=0A~) jump (wipc) goto (getInput) *bgi writeln(Response from user: "%resp%") if (%nv%wiprestreq%)=(1) then goto (thetop) if (%resp%)=(A) then goto (dotag) if (%resp%)=(Tag) then goto (tagmode) if (%resp%)=(Download) then goto (downmode) if (%resp%)=(Download Mode) then goto (downmode) if (%resp%)=(View) then goto (viewmode) if (%resp%)=(Exit) then goto (ret4) if (%resp%)=(quit) then goto (ret4) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) if (%var%b)=(-1) then goto (more) setequal(/resp=%var%b) inpclose inpline(%pbtemp%wiplist.%node%,%var%b) setequal(d=%aresp%) writeln(b: "%var%b" aresp from inpline: "%aresp%") inpopen(%pbtemp%wipfile.%node%,4) inpread(%nv%d%) if (%var%d)=() then goto (getresp0) get(&d,1,1) if (%aresp%)=( ) then goto (getresp0) find(&d, ) writeln(aresp from find: "%aresp%") if (%aresp%)=(0) then goto (getresp0) get(&d,1,%aresp%) setequal(d=%aresp%) rtrim(d) if (%nv%curfmode%)=(1) then goto (tagit) if (%nv%curfmode%)=(2) then goto (downloadit) if (%nv%curfmode%)=(3) then goto (viewit) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif if (%nv%wipc%)=(date) then goto (ssetup) *NoCmnd setnv(wtxt=) goto (getResp0) *listfa seek(%pbtemp%wiplist.%node%) ifnottrue(goto(donef)) inpopen(%pbtemp%wiplist.%node%,4) setnv(d=0) setnv(m=0) setnv(e=0) setnv(f=0) *more setequal(u=0) setequal(d=%nv%d%) setequal(m=%nv%m%) setequal(e=%nv%e%) setequal(f=%nv%f%) fendif(donea) *stLoop inc(u) inc(d) inpread writeln(%aresp%) if (%aresp%)=() then setequal(/aresp= ) setequal(c=07~listbox~%aresp%~) jump (wipc) if (%var%u)>(%nv%high%) then goto (donef) fendif(donea) goto(stloop) *done inpclose cnvtk(%var%e) setequal(c=07~listbox~ -- End of File Listing --~) jump (wipc) goto (donef) *none setequal(c=07~listbox~There are no files in this area.~) jump (wipc) goto (donef) *NoMore if (%nv%high%)=() then goto (ga0) ; writeln(No more matches to the text you specified could be found.) ; setequal(c=13~No more matches to the text you specified could be found.~End of List~1~) ; jump (okbox0) goto (donef) ; goto (getresp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(50) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *getinput writeln(Waiting for input from remote user.) setequal(y=180) writeln(loading wipask.ctl) loadsub(control\wipask.ctl) writeln(back from wipask.ctl (1)) if (%aresp%)<>(24) then goto (bgi) writeln(loading time warning.) loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) writeln(loading wipask.ctl (2)) loadsub(control\wipask.ctl) writeln(back from wipask.ctl (2)) if (%aresp%)=(24) then loadmem(control\timeout.ctl) writeln(going back to bgi) goto (bgi) *donef ;inc(d) setnv(d=%var%d) setnv(m=%var%m) setnv(e=%var%e) setnv(f=%var%f) write(Updating list box on user's screen ... ) setequal(c=07~listbox~-1~) jump (wipc) setequal(c=0F~listbox~Change File Area~1~1~2~) jump (wipc) setequal(c=0F~RecCount~20~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) setequal(c=0A~) jump (wipc) writeln(Done!) goto(getresp0) *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *notext writeln(No text was specified. Enter some text to search for and try again...) setequal(c=13~No text was specified. Please enter some text to search for and try again or click "quit" to exit.~No Text Specified~1~) jump (okbox0) goto (getresp0) *doAdd loadsub(control\macros\tag-wip.ctl) goto(thetop) *okbox0 Jump (wipc) *tryr0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (tryr0) ret *ret4 setnv(d=) inpclose return *dispscr setnv(high=21) setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=%nv%newf%)) ret *dispCurMode if (%nv%curfMode%)<>(1) then goto (not1) setequal(c=07~status~Now in TAG MODE. To tag a file, click on the filename you want in the box below:~) jump(wipc) *not1 if (%nv%curfmode%)<>(2) then goto (not2) setequal(c=07~status~Now in DOWNLOAD MODE. To download a file, click on the filename you want in the box below:~) jump (wipc) *not2 if (%nv%curfmode%)<>(3) then ret setequal(c=07~status~Now in VIEW MODE. To view a file, click on the filename you want to view in the box below:~) goto (wipc) *tagmode setnv(curfmode=1) jump (dispcurmode) goto (getresp0) *downmode setnv(curfmode=2) jump (dispcurmode) goto (getresp0) *viewmode setnv(curfmode=3) jump (dispcurmode) goto (getresp0) *downloadit setnv(filename=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) loadsub(control\exitwip.ctl) loadsub(control\macros\down.ctl) setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (thetop) ;goto (InitBox) *tagit setnv(filename=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) loadsub(control\macros\tag-wip.ctl,goto(dotag)) setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (getresp0) ;goto (InitBox) *viewit setnv(key=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) upcase(d) find(&d,.TXT) if (%aresp%)>(0) then goto (txt) find(&d,.ASC) if (%aresp%)>(0) then goto (txt) loadsub(control\exitwip.ctl) setnv(filename=%nv%key%) loadsub(control\macros\zview.ctl) *bk setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (thetop) ;goto (InitBox) *txt loadsub(control\macros\freadwip.ctl) goto (bk) *ssetup setNv(key=%nv%Ctext%) setnv(newf=flist) goto (tt0) *uparea if (%nv%carea%)=>(%maxfarea%) then goto (donef) addvar(%nv%carea%+1=a) setnv(carea=%var%a) selfarea(%var%a) enufsec(%filsec%) ifnottrue(goto (uparea)) numb(No) setnv(fn=%filpath%files.bbs) if (%CD%)=(Yes) then setnv(fn=%CDPATH%%var%a\files.bbs) write(Retrieving file listing for area #%var%a...) inpclose listlog() ;zap(%pbtemp%wiplist.%node%) appendto(%pbtemp%wiplist.%node%, -- File Area #%var%a: %filname% --) lines(%nv%fn%) setequal(g=%aresp%) addvar(%aresp%+%flines%=c) setnv(flines=%var%c) listlog(%pbtemp%wiplist.%Node%) setequal(k=1) new(%nv%fn%,12,15,7,11,3,%nv%key%,%var%k,%var%g) listlog() writeln(Done!) if (%nv%d%)=() then ret inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) ret *donea setnv(d=%var%d) inpclose jump (uparea) goto (stloop) NEWCTLkif (%nv%wipmode%)=(1) then loadmem(control\macros\newfwip.ctl) numb(Yes) zap(%pbtemp%nofound.%node%) setequal(f=%maxfarea%) ;this sets the max area to search... TagClear ;clear the tagged files list setequal(k=0) setequal(g=1) clearscr Say(&CR&&11&You last checked for new files on &12&/:LASTCHK/&11&. Please enter the date to start) Say(the search at or press (&14&ENTER&11&) to start at &12&/:LASTCHK/.) setequal(y=15) *askagain Say(&CR&&15&Please enter the date to start at&12&: &12&( )&14&*) back(9) SetFill(/:lastchk/) MenuAsk(%CRON%%LEN%8%*) setequal(n=%RESP%) if (%RESP%)=(<CR>) then setequal(n=/:LASTCHK/) Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) dateok(%var%n) if (%ARESP%)=(No) then goto (invdate) loadsub(control\selfilea.ctl) clearscr setequal(t=0) jump(pauseprompt1) Say(&11&(Space bar) Aborts. &14&Searching for "%var%n". . .&CR&) log(--,New Files Scan (%var%n)) spause(2) *stsearch seekfile(%pbtemp%nofound.%node%,[%var%g]) iftrue(goto(skCheck)) selfarea(%var%g) enufsec(%FILSEC%) if (%ARESP%)=(No) then goto (skcheck) *cnew eline(79) Say(&7&%var%g %FILNAME%|) if (%var%t)=(0) then setequal(/nvK=%var%k) if (%var%t)=(0) then setequal(/nvStArea=%var%g) if (%CD%)=(No) then new(%FILPATH%files.bbs,12,15,7,11,3,%var%n,%var%k) if (%CD%)=(Yes) then new (%CDPath%%filarea%\files.bbs,12,15,7,11,3,%var%n,%var%k) notif (%filine%)=(0) then goto (passNoFound) appendto(%pbtemp%nofound.%node%,[%var%g]) *passNoFound if (%didpause%)=(TRUE) then setequal(t=-1) inc(t) iftrue (goto (enew)) ifkey( ) ifTrue (goto (enew)) ;did user hit stop? localkey(1) notif (%ARESP%)=(No) then goto (enew) *skcheck if (&g)=>(&f) then goto (enew) inc(g) goto (stsearch) *enew if (%didpause%)=(TRUE) then setequal(t=0) eline(79) selfarea(/:LASTDOWN/) setequal(/LASTCHK=%DATE%) setequal(k=0) DefPause($7$&0&END$0$&3& &11&V&3&:View, &11&D&3&:Download, &11&T&3&:Tag, &11&H&3&:Help or &11&ENTER&3& to Quit?&12&: &7&) defPif(v:view2,h:fhlp,t:tag2,d:down2) setequal(/nonstop=0) pauseprompt jump(pauseprompt) numb(No) tagclear Return *invdate display(display\INVDATE) goto (askagain) *view2 if (%didpause%)=(TRUE) then setequal(t=0) setequal(/nvdefpause1=%defpause%) setequal(/nvdefpif1=%defpif%) setequal(k=%ARESP%) loadsub(control\macros\zview.ctl) defpause(%nv%defpause1%) defpif(%nv%defpif1%) goto (blist2) *tag2 if (%didpause%)=(TRUE) then setequal(t=0) setequal(k=%ARESP%) loadsub(control\macros\numbtag.ctl) goto (blist2) *down2 if (%didpause%)=(TRUE) then setequal(t=0) setequal(/nvdefpause1=%defpause%) setequal(/nvdefpif1=%defpif%) setequal(k=%ARESP%) loadsub(control\macros\down.ctl) defpause(%nv%defpause1%) defpif(%nv%defpif1%) selfarea(/:Lastdown/) goto (blist2) *blist2 spause(0) clearscr notif (%var%t)=(0) then setequal(k=%nv%k%) notif (%var%t)=(0) then setequal(g=%nv%starea%) setequal(t=0) goto (stsearch) *fhlp setequal(k=%ARESP%) if (%didpause%)=(TRUE) then setequal(t=0) setequal(/nvdefpause1=%defpause%) setequal(/nvdefpif1=%defpif%) jump(pauseprompt) display(display\help\lst,/:SEC/) defpause(%nv%defpause1%) defpif(%nv%defpif1%) goto (blist2) *Pauseprompt1 DefPause($7$&0&More$0$&3& &11&S&3&:Stop, &11&N&3&:Nonstop, &11&V&3&:View, &11&D&3&:Download, &11&T&3&:Tag, &11&H&3&:Help or &11&C&3&:Continue?&12&: &7&) defPif(s:stop,n:nonstop,v:view2,h:fhlp,t:tag2,d:down2) ret *Pauseprompt DefPause($7$&0&Send more text$0$&3& &11&S&3&:Stop, &11&N&3&:Nonstop or &11&C&3&:Continue?&12&: &7&) defPif(s:stop,n:nonstop) ret *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=24) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(AskAgain) SEARCH-WCTLC setnv(d=) setnv(flines=0) zap(%pbtemp%wiplist.%node%) setnv(carea=0) setnv(searchf=searchf) inpclose setnv(CurFMode=1) *tt0 if (%nv%searchf%)<>(searchf) then jump (dispscr) if (%nv%searchf%)=(searchf) then goto (thetop) Jump (uparea) goto (initbox) *thetop jump (dispscr) *initBox setequal(c=14~listbox~%nv%flines%~%nv%high%~) jump (wipc) jump (dispCurMode) if (%nv%searchf%)<>(searchf) then goto (listfa) *GetResp0 if (%nv%wiprestreq%)=(1) then goto (thetop) writeln(got to getresp0) setequal(c=0A~) jump (wipc) goto (getInput) *bgi writeln(Response from user: "%resp%") if (%nv%wiprestreq%)=(1) then goto (thetop) if (%resp%)=(A) then goto (dotag) if (%resp%)=(Tag) then goto (tagmode) if (%resp%)=(Download) then goto (downmode) if (%resp%)=(Download Mode) then goto (downmode) if (%resp%)=(View) then goto (viewmode) if (%resp%)=(Exit) then goto (ret4) if (%resp%)=(quit) then goto (ret4) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) if (%var%b)=(-1) then goto (more) setequal(/resp=%var%b) inpclose inpline(%pbtemp%wiplist.%node%,%var%b) setequal(d=%aresp%) writeln(b: "%var%b" aresp from inpline: "%aresp%") inpopen(%pbtemp%wipfile.%node%,4) inpread(%nv%d%) if (%var%d)=() then goto (getresp0) get(&d,1,1) if (%aresp%)=( ) then goto (getresp0) find(&d, ) writeln(aresp from find: "%aresp%") if (%aresp%)=(0) then goto (getresp0) get(&d,1,%aresp%) setequal(d=%aresp%) rtrim(d) if (%nv%curfmode%)=(1) then goto (tagit) if (%nv%curfmode%)=(2) then goto (downloadit) if (%nv%curfmode%)=(3) then goto (viewit) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then upcase(b) get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif if (%nv%wipc%)=(text) then goto (ssetup) *NoCmnd setnv(wtxt=) goto (getResp0) *listfa seek(%pbtemp%wiplist.%node%) ifnottrue(goto(donef)) inpopen(%pbtemp%wiplist.%node%,4) setnv(d=0) setnv(m=0) setnv(e=0) setnv(f=0) *more setequal(u=0) setequal(d=%nv%d%) setequal(m=%nv%m%) setequal(e=%nv%e%) setequal(f=%nv%f%) fendif(donea) *stLoop inc(u) inc(d) inpread writeln(%aresp%) if (%aresp%)=() then setequal(/aresp= ) setequal(c=07~listbox~%aresp%~) jump (wipc) if (%var%u)>(%nv%high%) then goto (donef) fendif(donea) goto(stloop) *done inpclose cnvtk(%var%e) setequal(c=07~listbox~ -- End of File Listing --~) jump (wipc) goto (donef) *none setequal(c=07~listbox~There are no files in this area.~) jump (wipc) goto (donef) *NoMore if (%nv%high%)=() then goto (ga0) ; writeln(No more matches to the text you specified could be found.) ; setequal(c=13~No more matches to the text you specified could be found.~End of List~1~) ; jump (okbox0) goto (donef) ; goto (getresp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(50) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *getinput writeln(Waiting for input from remote user.) setequal(y=180) writeln(loading wipask.ctl) loadsub(control\wipask.ctl) writeln(back from wipask.ctl (1)) if (%aresp%)<>(24) then goto (bgi) writeln(loading time warning.) loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) writeln(loading wipask.ctl (2)) loadsub(control\wipask.ctl) writeln(back from wipask.ctl (2)) if (%aresp%)=(24) then loadmem(control\timeout.ctl) writeln(going back to bgi) goto (bgi) *donef ;inc(d) setnv(d=%var%d) setnv(m=%var%m) setnv(e=%var%e) setnv(f=%var%f) write(Updating list box on user's screen ... ) setequal(c=07~listbox~-1~) jump (wipc) setequal(c=0F~listbox~Change File Area~1~1~2~) jump (wipc) setequal(c=0F~RecCount~20~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) setequal(c=0A~) jump (wipc) writeln(Done!) goto(getresp0) *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *notext writeln(No text was specified. Enter some text to search for and try again...) setequal(c=13~No text was specified. Please enter some text to search for and try again or click "quit" to exit.~No Text Specified~1~) jump (okbox0) goto (getresp0) *doAdd loadsub(control\macros\tag-wip.ctl) goto(thetop) *okbox0 Jump (wipc) *tryr0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (tryr0) ret *ret4 setnv(d=) inpclose return *dispscr setnv(high=21) setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=%nv%searchf%)) ret *dispCurMode if (%nv%curfMode%)<>(1) then goto (not1) setequal(c=07~status~Now in TAG MODE. To tag a file, click on the filename you want in the box below:~) jump(wipc) *not1 if (%nv%curfmode%)<>(2) then goto (not2) setequal(c=07~status~Now in DOWNLOAD MODE. To download a file, click on the filename you want in the box below:~) jump (wipc) *not2 if (%nv%curfmode%)<>(3) then ret setequal(c=07~status~Now in VIEW MODE. To view a file, click on the filename you want to view in the box below:~) goto (wipc) *tagmode setnv(curfmode=1) jump (dispcurmode) goto (getresp0) *downmode setnv(curfmode=2) jump (dispcurmode) goto (getresp0) *viewmode setnv(curfmode=3) jump (dispcurmode) goto (getresp0) *downloadit setnv(filename=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) loadsub(control\exitwip.ctl) loadsub(control\macros\down.ctl) setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (thetop) ;goto (InitBox) *tagit setnv(filename=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) loadsub(control\macros\tag-wip.ctl,goto(dotag)) setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (getresp0) ;goto (InitBox) *viewit setnv(key=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) upcase(d) find(&d,.TXT) if (%aresp%)>(0) then goto (txt) find(&d,.ASC) if (%aresp%)>(0) then goto (txt) loadsub(control\exitwip.ctl) setnv(filename=%nv%key%) loadsub(control\macros\zview.ctl) *bk setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (thetop) ;goto (InitBox) *txt loadsub(control\macros\freadwip.ctl) goto (bk) *ssetup setNv(key=%nv%Ctext%) setnv(searchf=flist) goto (tt0) *uparea if (%nv%carea%)=>(%maxfarea%) then goto (donef) addvar(%nv%carea%+1=a) setnv(carea=%var%a) selfarea(%var%a) enufsec(%filsec%) ifnottrue(goto (uparea)) numb(No) setnv(fn=%filpath%files.bbs) if (%CD%)=(Yes) then setnv(fn=%CDPATH%%var%a\files.bbs) write(Retrieving file listing for area #%var%a...) inpclose listlog() ;zap(%pbtemp%wiplist.%node%) appendto(%pbtemp%wiplist.%node%, -- File Area #%var%a: %filname% --) lines(%nv%fn%) setequal(g=%aresp%) addvar(%aresp%+%flines%=c) setnv(flines=%var%c) listlog(%pbtemp%wiplist.%Node%) setequal(k=1) fsearch(%nv%fn%,12,15,7,11,3,%nv%key%,%var%k,%var%g) listlog() writeln(Done!) if (%nv%d%)=() then ret inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) ret *donea setnv(d=%var%d) inpclose jump (uparea) goto (stloop) SEARCHCTLif (%nv%wipmode%)=(1) then loadmem(control\macros\search-w.ctl) numb(Yes) zap(%pbtemp%nofound.%node%) TagClear ;clear the number-tag file listing buffer setequal(k=0) setequal(f=%maxfarea%) ; max area to search... setequal(g=1) *GetInfo clearscr display(display\fsearch) setequal(y=20) MenuAsk(%CRON%&15&Please enter text to search for&12&: &14&*) killperc if (%RESP%)=(<CR>) then goto (dReturn) Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) setequal(n=%RESP%) loadsub(control\selfilea.ctl) log(--,Search (Files) for: %var%n) jump(pauseprompt1) clearscr setequal(t=0) Say(&11& Space bar Aborts. &14&Searching for "%var%n". . .&CR&) spause(2) *stsearch seekfile(%pbtemp%nofound.%node%,[%var%g]) iftrue(goto(skCheck)) selfarea(%var%g) eline(79) enufsec(%FILSEC%) IfNotTrue(goto (skcheck)) *csearch Say(&7&%var%g %FILNAME%|) if (%var%t)=(0) then setequal(/nvK=%var%k) if (%var%t)=(0) then setequal(/nvStArea=%var%g) if (%CD%)=(No) then fsearch(%FILPATH%files.bbs,12,15,7,11,3,%var%n,1,1,%var%k) if (%CD%)=(Yes) then fsearch(%CDPath%%filarea%\files.bbs,12,15,7,11,3,%var%n,1,1,%var%k) notif (%filine%)=(0) then goto (passNoFound) appendto(%pbtemp%nofound.%node%,[%var%g]) *passNoFound if (%didpause%)=(TRUE) then setequal(t=-1) inc(t) iftrue(goto (enew)) ifkey( ) if (%ARESP%)=(Yes) then goto (enew) ;did user hit stop? localkey(1) notif (%ARESP%)=(No) then goto (enew) ;did SYSOP hit stop? *skcheck if (&g)=>(&f) then goto (enew) inc(g) goto (stsearch) *enew if (%didpause%)=(TRUE) then setequal(t=0) eline(79) selfarea(/:LASTDOWN/) setequal(k=0) ;linefeed(1) ;display(display\sdone) DefPause($7$&0&END$0$&3& &11&V&3&:View, &11&D&3&:Download, &11&T&3&:Tag, &11&H&3&:Help or &11&ENTER&3& to Quit?&12&: &7&) defPif(v:view2,h:fhlp,t:tag2,d:down2) setequal(/nonstop=0) pauseprompt jump(pauseprompt) *dReturn numb(No) tagclear Return *view2 setequal(k=%ARESP%) if (%didpause%)=(TRUE) then setequal(t=0) loadsub(control\macros\zview.ctl) goto (blist2) *tag2 if (%didpause%)=(TRUE) then setequal(t=0) setequal(k=%ARESP%) loadsub(control\macros\Numbtag.ctl) goto (blist2) *down2 if (%didpause%)=(TRUE) then setequal(t=0) setequal(k=%ARESP%) loadsub(control\macros\down.ctl) selfarea(/:Lastdown/) goto (blist2) *blist2 spause(0) clearscr notif (%var%t)=(0) then setequal(k=%nv%k%) notif (%var%t)=(0) then setequal(g=%nv%starea%) setequal(t=0) goto (stsearch) *fhlp setequal(k=%ARESP%) if (%didpause%)=(TRUE) then setequal(t=0) jump(pauseprompt) display(display\help\lst,/:SEC/) goto (blist2) *Pauseprompt1 DefPause($7$&0&More$0$&3& &11&S&3&:Stop, &11&N&3&:Nonstop, &11&V&3&:View, &11&D&3&:Download, &11&T&3&:Tag, &11&H&3&:Help or &11&C&3&:Continue?&12&: &7&) defPif(s:enew,n:nonstop,v:view2,h:fhlp,t:tag2,d:down2) ret *Pauseprompt DefPause($7$&0&Send more text$0$&3& &11&S&3&:Stop, &11&N&3&:Nonstop or &11&C&3&:Continue?&12&: &7&) defPif(s:stop,n:nonstop) ret *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=28) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(GetInfo) WS-WIPCTL< setnv(d=) setnv(flines=0) zap(%pbtemp%wiplist.%node%) setnv(carea=0) setnv(searchw=searchw) inpclose setnv(CurFMode=1) *tt0 if (%nv%searchw%)<>(searchw) then jump (dispscr) if (%nv%searchw%)=(searchw) then goto (thetop) Jump (uparea) goto (initbox) *thetop jump (dispscr) *initBox setequal(c=14~listbox~%nv%flines%~%nv%high%~) jump (wipc) jump (dispCurMode) if (%nv%searchw%)<>(searchw) then goto (listfa) *GetResp0 if (%nv%wiprestreq%)=(1) then goto (thetop) writeln(got to getresp0) setequal(c=0A~) jump (wipc) goto (getInput) *bgi writeln(Response from user: "%resp%") if (%nv%wiprestreq%)=(1) then goto (thetop) if (%resp%)=(A) then goto (dotag) if (%resp%)=(Tag) then goto (tagmode) if (%resp%)=(Download) then goto (downmode) if (%resp%)=(Download Mode) then goto (downmode) if (%resp%)=(View) then goto (viewmode) if (%resp%)=(Exit) then goto (ret4) if (%resp%)=(quit) then goto (ret4) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) if (%var%b)=(-1) then goto (more) setequal(/resp=%var%b) inpclose inpline(%pbtemp%wiplist.%node%,%var%b) setequal(d=%aresp%) writeln(b: "%var%b" aresp from inpline: "%aresp%") inpopen(%pbtemp%wipfile.%node%,4) inpread(%nv%d%) if (%var%d)=() then goto (getresp0) get(&d,1,1) if (%aresp%)=( ) then goto (getresp0) find(&d, ) writeln(aresp from find: "%aresp%") if (%aresp%)=(0) then goto (getresp0) get(&d,1,%aresp%) setequal(d=%aresp%) rtrim(d) if (%nv%curfmode%)=(1) then goto (tagit) if (%nv%curfmode%)=(2) then goto (downloadit) if (%nv%curfmode%)=(3) then goto (viewit) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif if (%nv%wipc%)=(text) then goto (ssetup) *NoCmnd setnv(wtxt=) goto (getResp0) *listfa seek(%pbtemp%wiplist.%node%) ifnottrue(goto(donef)) inpopen(%pbtemp%wiplist.%node%,4) setnv(d=0) setnv(m=0) setnv(e=0) setnv(f=0) *more setequal(u=0) setequal(d=%nv%d%) setequal(m=%nv%m%) setequal(e=%nv%e%) setequal(f=%nv%f%) fendif(donea) *stLoop inc(u) inc(d) inpread writeln(%aresp%) if (%aresp%)=() then setequal(/aresp= ) setequal(c=07~listbox~%aresp%~) jump (wipc) if (%var%u)>(%nv%high%) then goto (donef) fendif(donea) goto(stloop) *done inpclose cnvtk(%var%e) setequal(c=07~listbox~ -- End of File Listing --~) jump (wipc) goto (donef) *none setequal(c=07~listbox~There are no files in this area.~) jump (wipc) goto (donef) *NoMore if (%nv%high%)=() then goto (ga0) ; writeln(No more matches to the text you specified could be found.) ; setequal(c=13~No more matches to the text you specified could be found.~End of List~1~) ; jump (okbox0) goto (donef) ; goto (getresp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(50) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *getinput writeln(Waiting for input from remote user.) setequal(y=180) writeln(loading wipask.ctl) loadsub(control\wipask.ctl) writeln(back from wipask.ctl (1)) if (%aresp%)<>(24) then goto (bgi) writeln(loading time warning.) loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) writeln(loading wipask.ctl (2)) loadsub(control\wipask.ctl) writeln(back from wipask.ctl (2)) if (%aresp%)=(24) then loadmem(control\timeout.ctl) writeln(going back to bgi) goto (bgi) *donef ;inc(d) setnv(d=%var%d) setnv(m=%var%m) setnv(e=%var%e) setnv(f=%var%f) write(Updating list box on user's screen ... ) setequal(c=07~listbox~-1~) jump (wipc) setequal(c=0F~listbox~Change File Area~1~1~2~) jump (wipc) setequal(c=0F~RecCount~20~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) setequal(c=0A~) jump (wipc) writeln(Done!) goto(getresp0) *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *notext writeln(No text was specified. Enter some text to search for and try again...) setequal(c=13~No text was specified. Please enter some text to search for and try again or click "quit" to exit.~No Text Specified~1~) jump (okbox0) goto (getresp0) *doAdd loadsub(control\macros\tag-wip.ctl) goto(thetop) *okbox0 Jump (wipc) *tryr0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (tryr0) ret *ret4 setnv(d=) inpclose return *dispscr setnv(high=21) setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=%nv%searchw%)) ret *dispCurMode if (%nv%curfMode%)<>(1) then goto (not1) setequal(c=07~status~Now in TAG MODE. To tag a file, click on the filename you want in the box below:~) jump(wipc) *not1 if (%nv%curfmode%)<>(2) then goto (not2) setequal(c=07~status~Now in DOWNLOAD MODE. To download a file, click on the filename you want in the box below:~) jump (wipc) *not2 if (%nv%curfmode%)<>(3) then ret setequal(c=07~status~Now in VIEW MODE. To view a file, click on the filename you want to view in the box below:~) goto (wipc) *tagmode setnv(curfmode=1) jump (dispcurmode) goto (getresp0) *downmode setnv(curfmode=2) jump (dispcurmode) goto (getresp0) *viewmode setnv(curfmode=3) jump (dispcurmode) goto (getresp0) *downloadit setnv(filename=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) loadsub(control\exitwip.ctl) loadsub(control\macros\down.ctl) setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (thetop) ;goto (InitBox) *tagit setnv(filename=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) loadsub(control\macros\tag-wip.ctl,goto(dotag)) setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (getresp0) ;goto (InitBox) *viewit setnv(key=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) upcase(d) find(&d,.TXT) if (%aresp%)>(0) then goto (txt) find(&d,.ASC) if (%aresp%)>(0) then goto (txt) loadsub(control\exitwip.ctl) setnv(filename=%nv%key%) loadsub(control\macros\zview.ctl) *bk setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (thetop) ;goto (InitBox) *txt loadsub(control\macros\freadwip.ctl) goto (bk) *ssetup setNv(key=%nv%Ctext%) setnv(searchw=flist) goto (tt0) *uparea if (%nv%carea%)=>(%maxfarea%) then goto (donef) addvar(%nv%carea%+1=a) setnv(carea=%var%a) selfarea(%var%a) enufsec(%filsec%) ifnottrue(goto (uparea)) numb(No) setnv(fn=%filpath%files.bbs) if (%CD%)=(Yes) then setnv(fn=%CDPATH%%var%a\files.bbs) write(Retrieving file listing for area #%var%a...) inpclose listlog() ;zap(%pbtemp%wiplist.%node%) appendto(%pbtemp%wiplist.%node%, -- File Area #%var%a: %filname% --) lines(%nv%fn%) setequal(g=%aresp%) addvar(%aresp%+%flines%=c) setnv(flines=%var%c) listlog(%pbtemp%wiplist.%Node%) setequal(k=1) wsearch(%nv%fn%,12,15,7,11,3,%nv%key%,1,1,%var%k,%var%g) listlog() writeln(Done!) if (%nv%d%)=() then ret inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) ret *donea setnv(d=%var%d) inpclose jump (uparea) goto (stloop) WSEARCHCTL;if (%nv%wipmode%)=(1) then loadmem(control\macros\ws-wip.ctl) numb(Yes) zap(%pbtemp%nofound.%node%) tagclear setequal(f=%maxfarea%) ;this is the max area to search setequal(k=0) setequal(g=1) *GetInput clearscr display(display\wsearch) Say(&15&File to search for (Wildcards are valid)&12&: &15&( )&14&*) back(13) setequal(y=20) MenuAsk(%CRON%%LEN%12%*) if (%RESP%)=(<CR>) then goto (dr) Get(%RESP%,1,1) If(%ARESP%)=(?) then Goto(OlHelp) find(%resp%,.) ifnottrue(combine(%resp%+.*=e)) ifnottrue(setequal(/resp=%var%e)) setequal(n=%RESP%) loadsub(control\selfilea.ctl) log(--,Wildcard Search for: %var%n) jump(pauseprompt1) clearscr setequal(t=0) Say(&11& Space bar Aborts. &14&Searching for "%var%n" &CR&) spause(2) *stsearch seekfile(%pbtemp%nofound.%node%,[%var%g]) iftrue(goto(skCheck)) selfarea(%var%g) eline(79) enufsec(%FILSEC%) ifNotTrue (goto (skcheck)) *csearch Say(&7&%var%g %FILNAME%|) if (%var%t)=(0) then setequal(/nvK=%var%k) if (%var%t)=(0) then setequal(/nvStArea=%var%g) if (%CD%)=(No) then wsearch(%FILPATH%files.bbs,12,15,7,11,3,%var%n,1,1,%var%k) if (%CD%)=(Yes) then wsearch(%CDPath%%filarea%\files.bbs,12,15,7,11,3,%var%n,1,1,%var%k) notif (%filine%)=(0) then goto (passNoFound) appendto(%pbtemp%nofound.%node%,[%var%g]) *passNoFound if (%didpause%)=(TRUE) then setequal(t=-1) inc(t) ifTrue (goto (enew)) ifkey( ) ifTrue (goto (enew)) ;did user hit stop? localkey(1) notif (%ARESP%)=(No) then goto (enew) *skcheck if (&g)=>(&f) then goto (enew) inc(g) goto (stsearch) *enew if (%didpause%)=(TRUE) then setequal(t=0) eline(79) selfarea(/:LASTDOWN/) setequal(k=0) ;display(display\sdone) DefPause($7$&0&END$0$&3& &11&V&3&:View, &11&D&3&:Download, &11&T&3&:Tag, &11&H&3&:Help or &11&ENTER&3& to Quit?&12&: &7&) defPif(v:view2,h:fhlp,t:tag2,d:down2) setequal(/nonstop=0) pauseprompt jump(pauseprompt) *dr numb(No) tagclear Return *view2 if (%didpause%)=(TRUE) then setequal(t=0) setequal(k=%ARESP%) loadsub(control\macros\zview.ctl) goto (blist2) *tag2 if (%didpause%)=(TRUE) then setequal(t=0) setequal(k=%ARESP%) loadsub(control\macros\numbtag.ctl) goto (blist2) *down2 if (%didpause%)=(TRUE) then setequal(t=0) setequal(k=%ARESP%) loadsub(control\macros\down.ctl) selfarea(/:Lastdown/) goto (blist2) *blist2 spause(0) notif (%var%t)=(0) then setequal(k=%nv%k%) notif (%var%t)=(0) then setequal(g=%nv%starea%) clearscr setequal(t=0) goto (stsearch) *fhlp setequal(k=%ARESP%) if (%didpause%)=(TRUE) then setequal(t=0) jump(pauseprompt) display(display\help\lst,/:SEC/) goto (blist2) *Pauseprompt DefPause($7$&0&Send more text$0$&3& &11&S&3&:Stop, &11&N&3&:Nonstop or &11&C&3&:Continue?&12&: &7&) defPif(s:stop,n:nonstop) ret *Pauseprompt1 DefPause($7$&0&More$0$&3& &11&S&3&:Stop, &11&N&3&:Nonstop, &11&V&3&:View, &11&D&3&:Download, &11&T&3&:Tag, &11&H&3&:Help or &11&C&3&:Continue?&12&: &7&) defPif(s:stop,n:nonstop,v:view2,h:fhlp,t:tag2,d:down2) ret *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=30) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Goto(GetInput) BANKCTL╫!loadsub(control\exitwip.ctl) if (%event%)=(TRUE) then loadmem(control\macros\event.ctl) ;TIMEBANK by Doug Vermes with modifications by Scott Brown log(--,Entered Time Bank) *TimeBank ClearScr CursorOff SetEqual(/nvselected=1) If (%GRAPHICS%)=(ASCII) then goto (NoGraphics) Display(display\tbank2) SetEqual(t=/:INT1/) Jump(WelcScreen) Jump(ops) SeekUser(/:NAME/) SetEqual(n=%NDNUMB%) *MORE Seek (maxlimit.dat) ifnottrue(goto (NoLim)) InpLine (maxlimit.dat,1) SetEqual (m=%ARESP%) *bak cmpval (%var%t,%var%m) ifnottrue (SetEqual (t=%var%m)) *MORE2 LoadSub(control\macros\checkkey.ctl) If(%RESP%)=(<CR>) then Goto(DoIt) *THECHECK BigIf (8:Up,2:Down,W:Withdraw,D:Deposit,q:quit) if (%resp%)=(G) then loadmem(control\macros\bye.ctl) If(%RESP%)=(?) then Jump(olhelp) Goto(TimeBank) endif goto (more2) *Up SetEqual(/nvj=%VAR%J) AddVar(%NV%SELECTED%+-1=j) if(&j)<(1) then SetEqual(j=3) SetEqual(/nvselected=%VAR%J) SetEqual(j=%NV%J%) SetEqual(/nvj=) Jump(ops) Goto(more2) *Down SetEqual(/nvj=%VAR%J) AddVar(%NV%SELECTED%+1=j) if(&j)>(3) then SetEqual(j=1) SetEqual(/nvselected=%VAR%J) SetEqual(j=%NV%J%) SetEqual(/nvj=) Jump(ops) Goto(more2) *DoIt If(%NV%SELECTED%)=(1) then Goto(Withdraw) If(%NV%SELECTED%)=(2) then Goto(Deposit) If(%NV%SELECTED%)=(3) then Goto(quit) Jump(Ops) Goto(more2) *NoLimit SetEqual (m=99999) Say (&14&The maximum number of minutes allowed to be stored is %var%m.) Say (&7&Minutes Currently Stored in Bank: &15&%var%t) Say(&14&Time Currently Left: &15&/:LEFT/) goto (more2) *Deposit Jump(ClearBox) AnsiGoto (4,8) Say (&12& Bank Limit: &15&%VAR%M minutes) AnsiGoto (4,9) Say (&12& Current Balance: &15&%var%t minutes*) AnsiGoto (4,10) Say (&12&Time Currently Left: &15&/:LEFT/ minutes) AnsiGoto (4,12) menuask (%CRON%%LEN%18%&12&Deposit How Many Minutes? &15&*) *Checks If(%RESP%)=(<CR>) then AnsiGoto(4,13) Say(&12&Transaction Cancelled!) SecPause(1) Jump(ClearBox) Jump(WelcScreen) Goto(more2) endif Number (%RESP%) If (%RESP%)=(0) then goto (finale) IfNotTrue (goto (Deposit)) SetEqual (v=/:LEFT/) inc(v) CmpVal (%RESP%,%var%v) IfNotTrue(goto (toolarge1)) Addvar (%var%t+%RESP%=e) AddVar (%var%m+1=g) CmpVal (%var%e,%var%g) IfNotTrue(goto (OverMax)) AddVar (%var%t+%RESP%=T) SetEqual(/int1=%VAR%T) SetEqual (y=%RESP%) log(--,Deposited %VAR%Y minutes in Bank) If(&y)=(/:LEFT/) then Log(<<,Auto-Disconnect: No Time Remaining After Deposit) Addvar(/:LEFT/+-%var%y=x) jump(setleft) Goto (Finale) *Withdraw Jump(ClearBox) AnsiGoto (4,8) Say (&12& Current Balance: &15&%var%t minutes*) AnsiGoto (4,9) Say (&12&Time Currently Left: &15&/:LEFT/ minutes) AnsiGoto (4,11) menuAsk (%CRON%%LEN%17%&12&Withdraw How Many Minutes? &15&*) *Checks2 If(%RESP%)=(<CR>) then AnsiGoto(4,13) Say(&12&Transaction Cancelled!) SecPause(1) Jump(ClearBox) Jump(WelcScreen) Goto(more2) endif Number (%RESP%) IfNotTrue(goto (withdraw)) inc(t) CmpVal (%RESP%,%var%t) IfNotTrue(goto (toolarge)) addvar(&t+-1=t) AddVar (%var%T+-%RESP%=T) SetEqual(/int1=%VAR%T) SetEqual (y=%RESP%) AddVar(/:LEFT/+%var%y=x) log(--,Withdrew %VAR%Y minutes from Bank) jump(setleft) Goto (Finale) *Finale Jump(ClearBox) AnsiGoto (4,10) Say (&12& Current Balance: &15&%var%t minutes*) AnsiGoto (4,11) Say (&12&Time Currently Left: &15&/:LEFT/ minutes) SecPause(3) Jump(ClearBox) Jump(WelcScreen) Goto (more2) *TooLarge1 Jump(ClearBox) AnsiGoto (4,9) Say(&4& HEY!!!!!!!!) AnsiGoto(4,11) Say(&12& You don't have %RESP% minutes left!) SecPause (2) Goto (Deposit) *TooLarge Jump(ClearBox) AnsiGoto (4,9) Say(&4& HEY!!!!!!!!) AnsiGoto(4,11) Say(&12& You don't have %RESP% minutes) AnsiGoto(4,12) Say(&12& stored in the bank!) addvar(%var%t+-1=t) SecPause (2) Goto (Withdraw) *OverMax Jump(ClearBox) AnsiGoto (4,9) Say(&4& Sorry--------) AnsiGoto(4,11) Say(&12& You are only allowed to store) AnsiGoto(4,12) Say(&12& %VAR%M minutes in the bank.) SecPause (2) Goto (Deposit) *Quit Jump(clearbox) AnsiGoto (4,11) Say (&12& Thank You and Have a Nice Day!) SecPause(1) ClearScr CursorOn goto (ret0) *NoGraphics ClearScr Say ( %BBS% Time Bank) Say ( (NON-GRAPHICS MODE)) Say (&CR&Searching for your account....*) SeekUser(/:NAME/) ifnottrue(goto (nonuser)) SetEqual(n=%NDNUMB%) SetEqual(t=/:INT1/) *MORE222 Say (Found!) Seek (maxlimit.dat) ifnottrue(goto (NoLimit2)) InpLine (maxlimit.dat,1) SetEqual (m=%ARESP%) cmpval (%var%t,%var%m) ifnottrue(SetEqual (t=%var%m)) Say (&CR&The maximum number of minutes allowed to be stored is %var%m.) Say (Minutes Currently Stored in Bank: %var%t) Say(Time Currently Left: /:LEFT/) *MORE22 Say (&CR&(W)ithdraw Time, (D)eposit Time, (Q)uit Bank, (G)oodbye: *) MenuKey BigNiceSay (Q:Quit,W:Withdraw,D:Deposit,G:Goodbye) BigIf (W:Withdraw2,D:Deposit2,q:quit2) if (%resp%)=(G) then loadmem(control\macros\bye.ctl) If(%RESP%)=(?) then Jump(olhelp) goto (more22) *NoLimit2 SetEqual (m=99999) Say (The maximum number of minutes allowed to be stored is %var%m.) Say (Minutes Currently Stored in Bank: %var%t) Say(Time Currently Left: /:LEFT/) goto (more22) *Deposit2 menuAsk (Deposit How Many Minutes? *) Number (%RESP%) If (%RESP%)=(0) then goto (finale2) If (%ARESP%)=(No) then goto (Deposit2) SetEqual (v=/:LEFT/) inc(v) CmpVal (%RESP%,%var%v) ifnottrue(goto (toolarge12)) Addvar (%var%t+%RESP%=e) AddVar (%var%m+1=g) CmpVal (%var%e,%var%g) ifnottrue(goto (OverMax2)) AddVar (%var%t+%RESP%=T) SetEqual(/int1=%VAR%T) SetEqual (y=%RESP%) Addvar(/:LEFT/+-%var%y=x) log(--,Deposited %VAR%Y minutes in Bank) jump(setleft) Goto (Finale2) *Withdraw2 menuAsk (Withdraw How Many Minutes? *) Number (%RESP%) IfNotTrue(goto (withdraw2)) inc(t) CmpVal (%RESP%,%var%t) IfNotTrue(goto (toolarge2)) addvar(&t+-1=t) AddVar (%var%T+-%RESP%=T) SetEqual(/int1=%VAR%T) SetEqual (y=%RESP%) AddVar(/:LEFT/+%var%y=x) log(--,Withdrew %VAR%Y minutes from Bank) jump(setleft) Goto (Finale2) *Finale2 Say(&CR&Minutes Currently Stored in Bank: %var%t) Say(Time Currently Left: /:LEFT/) Goto (more22) *TooLarge12 Say(Hey! You don't have %RESP% minutes left!) Goto (Deposit2) *TooLarge2 Say(Hey! You don't have %RESP% minutes stored in the bank!) Goto (Withdraw2) *OverMax2 Say (Sorry! You are only allowed to store %var%m minutes.) Goto (Deposit2) *Quit2 Say (Thank you for using %BBS% Time Bank!) goto (ret0) *nonuser say(You are not a registered user on this BBS and therefore you cannot hold) say(an account here. If you would like an account, please notify the Sysop) goto (ret0) *nolim setequal(m=32767) goto (bak) *setleft if (%var%x)=(0) then goto (out) if (%var%X)=(-1) then goto (out) if (%var%x)=(-2) then goto (out) SetEqual(/LEFT=%var%x) ret *out display(display\notime) setequal(/left=1) quitbbs *Ops AnsiGoto(61,8) If(%NV%SELECTED%)=(1) then Say($7$&0&Withdraw Time) NotIf(%NV%SELECTED%)=(1) then Say($0$&12&W&7&ithdraw Time) AnsiGoto(61,10) If(%NV%SELECTED%)=(2) then Say($7$&0&Deposit Time) NotIF(%NV%SELECTED%)=(2) then Say($0$&12&D&7&eposit Time) AnsiGoto(61,12) If(%NV%SELECTED%)=(3) then Say($7$&0&Quit Time Bank) NotIf(%NV%SELECTED%)=(3) then Say($0$&12&Q&7&uit Time Bank) Ret *ClearBox Say($0$*) AnsiGoto(4,8) Spaces(43) AnsiGoto(4,9) Spaces(43) AnsiGoto(4,10) Spaces(43) AnsiGoto(4,11) Spaces(43) AnsiGoto(4,12) Spaces(43) AnsiGoto(4,13) Spaces(43) AnsiGoto(4,14) Spaces(43) AnsiGoto(4,15) Spaces(43) AnsiGoto(4,16) Spaces(43) Ret *WelcScreen AnsiGoto (4,8) SetEqual(a=Welcome to the %BBS% Time Bank!) SetLen(a=43) Say(&12&%VAR%A) AnsiGoto(4,10) Say(&12&Please select the transaction you wish to) AnsiGoto(4,11) Say(&12&make by using the [UP] and [DOWN] arrow) AnsiGoto(4,12) Say(&12&keys, or by typing the first letter of the) AnsiGoto(4,13) Say(&12&type of transaction. Please make your) AnsiGoto(4,14) Say(&12&selection now!) AnsiGoto(4,16) Say(&12&You have %var%t minutes in the bank.) AnsiGoto(4,20) Ret *OlHelp SetNv(AtPrompt=Yes) SetNv(Helpoption=107) LoadSub(olhelp\olhelp.ctl,Goto(ImplementOption)) Ret *ret0 if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return ABANDCTL,if (%nv%wipmode%)=(1) then goto (wip) setequal(d=%areaname%) selarea(/:lastmsg/) if (%areaname%)=(%var%d) then if (/:lastmsg/)=(1) then goto (already) say(&CR&&11&%var%d &2&Conference abandoned!&CR&) enter setequal(/resp=1) loadmem(control\macros\chg.ctl,goto (sela)) *already say(&CR&&12&You are already in the main conference &11&(%areaname%)&CR&) enter return *wip setnv(norefresh=1) if (/:lastmsg/)=(1) then goto (awip) selarea(/:lastmsg/) setequal(c=13~%areaname% Conference Abandoned!~Conf. Abandoned~1~) jump (okbox0) setequal(/resp=1) setequal(d=1) loadmem(control\macros\wipchg.ctl,goto(ga0)) *awip setequal(c=13~You are already in the main conference~Cannot Abandon~1~) jump (okbox0) return *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(50) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs MSEARCHCTL*search loadsub(control\exitwip.ctl) setequal(/nvsnsearch=0) Display(display\SEARCH) lowmsg(/:lastmsg/) setequal(n=%ARESP%) Say(&3&Which &11&search&3& option would you like?&12&: &15&*) *askagain MenuKey BigNiceSay(n:new,f:from,t:to,s:description,m:message text,q:quit,h:help) BigIf (n:new,f:from,t:toname,s:desc,m:text,h:help3) if (%RESP%)=(Q) then goto (ret0) flushout goto (askagain) *help3 display(display\help\sear,/:SEC/) goto (search) *from clearmem menuask (&CR&&3&Please enter the name of the person to search for&12&: &15&*) setequal(p=%RESP%) cmenuask(&CR&&3&Starting at which message number?&11&(%var%n-%var%f)&12&: &15&*) say(&11&&CR&Searching...|) seekfrom(/:LASTMSG/,%var%p,%RESP%) say(&CR&) log(--,Msg From Search for %var%p) zap(seeking.%NODE%,2) appendto(seeking.%NODE%,%var%p) eline(20) if (%ARESP%)=(ERROR) then goto (ret0) setequal(/nvsnsearch=1) setequal(/nvMsgReadType=20) setequal(u=0) goto (ret0) *new clearmem setequal(u=0) lowmsg(/:lastmsg/) setequal(n=%ARESP%) menuask (&CR&&3&Search for messages older than?&11&(Date)&12&: &15&*) if (%RESP%)=() then setequal(/Resp=/:last/) dateok(%RESP%) ifnottrue(goto (ret0)) setequal(p=%RESP%) cmenuask(&CR&&3&Starting at which message number?&11&(%var%n-%var%f)&12&: &15&*) say(&11&&CR&Searching...|) seeknew(/:LASTMSG/,%var%p,%RESP%) log(--,Msg New Search for %var%p) zap(seeking.%NODE%,5) appendto(seeking.%NODE%,%var%p) eline(20) if (%ARESP%)=(ERROR) then goto (ret0) setequal(/nvsnsearch=1) setequal(/nvMsgReadType=20) goto (ret0) *toname clearmem menuask (&CR&&3&Please enter the name of the person to search for&12&: &15&*) setequal(p=%RESP%) cmenuask(&CR&&3&Starting at which message number?&11&(%var%n-%var%f)&12&: &15&*) say(&11&&CR&Searching...|) seekto(/:LASTMSG/,%var%p,%RESP%) log(--,Msg To Search for %var%p) zap(seeking.%NODE%,1) appendto(seeking.%NODE%,%var%p) eline(20) if (%ARESP%)=(ERROR) then goto (ret0) setequal(/nvMsgReadType=20) setequal(/nvsnsearch=1) setequal(u=0) goto (ret0) *desc say(&3&) clearmem menuask (Please enter the description you want to search for&12&: &15&*) setequal(p=%RESP%) cmenuask(&CR&&3&Starting at which message number?&11&(%var%n-%var%f)&12&: &15&*) say(&CR&&11&Searching...|) seekdesc(/:LASTMSG/,%var%p,%RESP%) log(--,Msg Desc Search for %var%p) zap(seeking.%NODE%,3) appendto(seeking.%NODE%,%var%p) eline(20) if (%ARESP%)=(ERROR) then goto (ret0) setequal(/nvMsgReadType=20) setequal(/nvsnsearch=1) setequal(u=0) goto (ret0) *text clearmem menuask (&CR&&3&Please enter the text you want to search for&12&: &15&*) setequal(p=%RESP%) cmenuask(&CR&&3&Starting at which message number?&11&(%var%n-%var%f)&12&: &15&*) say(&CR&&11&Searching...|) seektext(/:LASTMSG/,%var%p,%RESP%) log(--,Msg Txt Search for %var%p) zap(seeking.%NODE%,4) appendto(seeking.%NODE%,%var%p) eline(20) if (%ARESP%)=(ERROR) then goto (ret0) setequal(/nvMsgReadType=20) setequal(/nvsnsearch=1) setequal(u=0) goto (ret0) *ret0 if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) Return SCANMCTL loadsub(control\exitwip.ctl) himsg(/:LASTMSG/) setequal(f=%ARESP%) lowmsg(/:LASTMSG/) setequal(y=%ARESP%) setequal(a=2) resetpause SetEqual(/nvu=%VAR%U) *scanm Say(&CR&&15&Scan Message Headers in (&12&F&15&)orward or (&12&R&15&)everse Direction? &14&*) MenuKey(%CRON%) BigNiceSay(f:forward,r:reverse) BigIf(f:forw,r:rev) If(%RESP%)=(<CR>) then goto (ret0) Goto(inv) *Scan2 Say(&CR&&15&Start at what message (*) If(&u)=(-1) then Say(&12&%var%f&15&-&12&%var%y&15&)*) If(&u)=(1) then Say(&12&%var%y&15&-&12&%var%f&15&)*) Say(? &14&*) CMenuAsk(%CRON%*) If(%RESP%)=(<CR>) then Goto(MoreScan) Number(%RESP%) IfNotTrue(goto(invnum)) ;if (%resp%)<(%var%y) then setequal(/resp=%var%y) ;if (%resp%)>(%var%f) then setequal(/resp=%var%f) If(&u)=(-1) then If(%RESP%)>(&y) then setequal(/resp=%var%y) If(%RESP%)<(&f) then setequal(/resp=%var%f) endif If(&u)=(1) then If(%RESP%)>(&f) then setequal(/resp=%var%f) If(%RESP%)<(&y) then setequal(/resp=%var%y) endif SetEqual(y=%RESP%) *MoreScan clearscr findms(%var%y) setequal(y=%aresp%) say(&14&Scanning Message Headers in area %AREANAME%:&7&&CR&) *BEGIN DO GETMAILREC(%VAR%Y,,1,t,sh) IF (%MSGNUMBER%)=(0) THEN GOTO(LP) NOTIF(%ARESP%)=(Yes) THEN GOTO(LP) SETEQUAL(C=%MSGDESC%) SetEqual(/nve=%VAR%E) MenuEqual(e=%NAME%) GET(&C,1,23) SAY(%MSGNUMBER%; %MSGSNTD%;&11& %MSGFROM% &7&to &15&%MSGTO%;&7& Re: %ARESP%) *INCIT SetEqual(e=%NV%E) SetEqual(/nve=) INC(A) *LP IF (&U)=(1) THEN IF (%MSGNUMBER%)=>(&F) THEN GOTO(BACK) IF (&U)=(-1) THEN IF (%MSGNUMBER%)<=(&F) THEN GOTO(BACK) ADDVAR(%VAR%Y+%VAR%U=y) IF (&A)=(/:SCREENLEN/) THEN GOTO(PAUSE) LOOP *pause setequal(a=1) pauseprompt if (%ARESP%)=(STOP) then goto (back) goto (begin) *back linefeed(1) enter goto (ret0) *forw SetEqual(u=1) HiMsg(/:LASTMSG/) SetEqual(f=%ARESP%) LowMsg(/:LASTMSG/) SetEqual(y=%ARESP%) Goto(scan2) *rev SetEqual(u=-1) HiMsg(/:LASTMSG/) SetEqual(y=%ARESP%) LowMsg(/:LASTMSG/) SetEqual(f=%ARESP%) Goto(scan2) *inv if (&s)=(10) then goto (abb) say(&CR&&12&Invalid selection! Please try again...) secpause(1) Goto(scanm) *invnum Say(&CR&&12&That is an invalid message number! Please try again...) secpause(1) Goto(scan2) *ret0 if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return EXPERTCTLif (%graphics%)=(RIP) then clearscr If (/:EXPERT/)=(Y) Then Goto (exon) if (%nv%wipmode%)=(1) then loadsub(control\exitwip.ctl) Say(&14&&CR&Menus will not be displayed (Expert Mode On)&CR&) ;if (%graphics%)=(WIP) then setequal(/graphics=ANSI) SetEqual(/EXPERT=Y) Enter Return *exon Say(&14&&CR&Menus will now be displayed (Expert Mode Off)&CR&) SetEqual(/EXPERT=N) Enter if (%graphics%)=(WIP) then setnv(wipmode=1) ;for some reason, this was ;commented out. Return READMWIPCTL╣jump (gethilow) loadsub(control\macros\msgstrt.ctl) Jump (gethilow) setequal(i=%nv%ctext%) setnv(i=%var%i) setnv(wipfS=) *AGMail setequal(/resp=) writeln(at agmail) getmail(%var%i,,%var%w) jump (setk) setequal(s=0) ;if (%MsgNumber%)=(0) then goto (next) setequal(z=10) *banyway if (%nv%wipmode%)<>(1) then setnv(wipmode=1) setnv(wipfS=) endif clearscr if (%nv%wipfs%)<>() then goto (passShow) setnv(NoInfo=1) if (%sec%)<(100) then loadsub(control\ewipscr.ctl,setnv(wipf=msg)) if (%SEC%)=>(100) then loadsub(control\ewipscr.ctl,setnv(wipf=msg-s)) arrayread(%pbtemp%msgstmp.%node%) setnv(wipfS=1) *passShow loadsub(control\macros\wiphdr.ctl) if (%nv%attf%)=(1) then jump (attbutton) if (%nv%attf%)=() then jump (attbclear) if (%nv%killed%)=(YES) then jump (unsetkbutton) if (%nv%killed%)<>(YES) then jump (setkbutton) setequal(c=14~msgtxt~200~12~) jump (wipc) writeln(Text of Message Follows: ------------------------------------------------) setnv(maxl=0) *dotext setequal(y=%nv%maxl%) setequal(f=0) *stl1 inc(y) inc(f) showline(%var%y) writeln(%aresp%) if (%aresp%)<>() then setequal(c=07~msgtxt~%aresp%~) if (%aresp%)=() then setequal(c=07~msgtxt~ ~) jump (wipc) if (%var%f)<(13) then if (%var%y)<(%maxline%) then goto (stl1) setnv(maxl=%var%y) loadsub(control\macros\wiphdr.ctl,goto(initbox)) *prompt0 writeln(Waiting for response from user.) setequal(c=0A~) jump (wipc) setequal(y=10) jump (wipask) if (%aresp%)<>(24) then goto (gotaresp) setequal(c=0A~) jump (wipc) setequal(y=20) jump (wipc) if (%aresp%)<>(24) then goto (gotaresp) setequal(c=0A~) jump (wipc) setequal(y=155) jump (wipask) if (%aresp%)=(24) then loadmem(control\timeout.ctl) *gotaresp writeln(User response = "%resp%") notif(%NV%KILLED%)=(YES) then bigif (keep:flagasnew,forward:forw,reply:reply,prev:previous,kill:kill,next:next,help:help2,Exit:inbox,compose:compose) if(%NV%KILLED%)=(YES) then bigif (keep:flagasnew,forward:forw,reply:reply,prev:previous,kill:unkill,next:next,help:help2,Exit:inbox,compose:compose) if (%nv%attf%)=(1) then bigif (Download:downatt) if (%sec%)=>(100) then bigif(UserFile:userrec) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (notlistbox) addvar(%aresp%+1=c) get(&b,%var%c,1000) if (%aresp%)<>(-1) then goto (prompt0) if (%nv%maxl%)=>(%maxline%) then goto (endm) goto(dotext) *notlistbox *reading goto (prompt0) *flagasnew ;MsgSetBit(%MSGNUMBER%,10,0) Goto(prompt0) *mark loadsub(control\macros\markmess.ctl) SetEqual(/nvstatus=REPEAT) *help2 findfirst(display\help\readn*.wip) if (%aresp%)=(0) then goto (nowiphelp) if (%aresp%)=() then goto (nowiphelp) display(display\help\readn,/:SEC/) goto (prompt0) *nowiphelp loadsub(control\exitwip.ctl) display(display\help\readn,/:sec/) goto(prompt0) *downatt zap(%pbtemp%varr.%NODE%,%var%R) linefeed(1) loadsub(control\exitwip.ctl) LoadSub(control\macros\savevars.ctl) loadsub(control\DOWNATT.CTL) Loadsub(control\macros\restvars.ctl) goto (aGMail) *forw loadsub(control\macros\messforw.ctl) if (&g)=(1) then goto (inv2) ;goto (repeat) Goto(agmail) *marked ; appears to be a useless label setequal(w=1) setequal(/nvreadtype=1) setequal(u=0) goto (next) *userrec EnufSec(100) IfNotTrue(Goto(inv2)) loadsub(control\macros\userrwip.ctl) Goto(AGMAil) *rev if (&y)=(0) then goto (inv2) setequal(f=%nv%f0%) setequal(y=%var%f) setequal(w=-1) if (&y)=(0) then goto (inv2) goto (repeat) *Qdisp SetEqual(/nvstatus=INBOX) Return *Inv2 ;SetEquaL(/NVSTATUS=INV2) ;Return if (&s)=(10) then goto (abb) say(&CR&&CR&&12&Invalid selection! Please try again...&CR&) secpause(1) flushout Goto(Reading) *kill SetEqual(/nvme=%VAR%Y) SetEqual(y=%MSGNUMBER%) loadsub(control\macros\killmess.ctl) SetEqual(y=%NV%ME%) SetEqual(/nvme=) SetEqual(i=%NV%I%) ;NotIf(&g)=(0) then SetEqual(^%VAR%i=DELETED) Goto(Inbox) *Unkill LoadSub(Control\macros\unkill.ctl) Goto(prompt0) *Inbox SetEqual(/nvstatus=INBOX) Return *next writeln(got to next) SetEqual(i=%NV%I%) Inc(i) If(&i)>(%NV%F0%) then Goto(lastmsg) setnv(i=%var%i) writeln(going back to agmail) goto (agmail) ;SetEqual(/nvselected=%VAR%I) ;SetEqual(/nvi=%VAR%I) ;Goto(MovingDown) ;;Goto(SetVars) *previous SetEqual(i=%NV%I%) AddVar(%VAR%I+-1=i) If(&i)<(%nv%n%) then Goto(firstmsg) SetEqual(/nvselected=%VAR%I) SetEqual(/nvi=%VAR%I) Goto(agmail) *SetVars ;Say(BEFORE I=%VAR%I) ;Say(AFTER I=%VAR%I) ;Say(:1=^:1^ :2=^:2^) getmail(%var%i,,%var%w) ;Say(ARESP from the GetMail(%VAR%I,,%VAR%W)=%ARESP%) ;Enter Say($0$*) Goto(AgMail) *getHiLow himsg setequal(f=%ARESP%) setnv(f0=%aresp%) lowmsg setequal(n=%ARESP%) setnv(n=%aresp%) ret *firstmsg Say(&CR&&12&This is the first message in your INBOX&CR&) SecPause(1) Inc(i) ;SetEqual(i=%NV%I%) SetEqual(/nvselected=%VAR%I) SetEqual(/nvstart=%VAR%I) SetEqual(/nvi=%VAR%I) Goto(Inbox) ;Goto(SetVars) *lastmsg Say(&CR&&12&This is the last message in your INBOX&CR&) SecPause(1) AddVar(%VAR%I+-1=i) SetEqual(/nvselected=%VAR%I) SetEqual(/nvi=%VAR%I) return ;Goto(SetVars) *MovingUp SetEqual(/nvtemp=%NV%SELECTED%) NotIf(%NV%SELECTED%)>=(%NV%START%) then Goto(QuickFix) SetEqual(/nvselected=%VAR%I) SetEqual(/nvscreen=REFRESH) SetEqual(i=%NV%SELECTED%) AddVar(%VAR%I+3=q) setequal(y=%var%i) Goto(SetVars) *QuickFix If(&i)<(1) then SetEqual(i=%NV%TOTMAX%) SetEqual(/nvselected=%VAR%I) Inc(i) AddVar(%VAR%I+-%NV%SCREENLEN%=i) Inc(i) SetEqual(/nvstart=%VAR%I) SetEqual(/nvscreen=NORMAL) Goto(SetVars) endif SetEqual(/nvstart=%VAR%I) SetEqual(/nvscreen=NORMAL) SetEqual(/nvselected=%VAR%I) Goto(SetVars) *MovingDown SetEqual(/nvtemp=%NV%SELECTED%) ; NotIf(&i)<=(%NV%MAX%) then ; SetEqual(/nvselected=%VAR%I) ; AddVar(%VAR%I+-%NV%SCREENLEN%=i) ; Inc(i) ; Inc(i) ; SetEqual(/nvstart=%VAR%I) ; SetEqual(i=%NV%SELECTED%) ; Goto(SetVars) ; Endif SetEqual(/nvselected=%VAR%I) SetEqual(/nvscreen=REFRESH) SetEqual(i=%NV%SELECTED%) AddVar(%VAR%I+3=q) setequal(y=%var%i) Goto(SetVars) *reply loadsub(control\exitwip.ctl) loadsub(control\macros\reply.ctl) SetEqual(i=%NV%SELECTED%) SetEqual(/nvnum=) goto (setvars) *compose LoadSub(control\macros\savevars.ctl) loadsub(control\exitwip.ctl) Loadsub(control\macros\enter.ctl) LoadSub(control\macros\restvars.ctl) Goto (agmail) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(45) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) RET *NOC0 log(<<,Carrier lost.) quitbbs *attbutton setequal(c=07~Download~Download %MSGATTNAME%~) goto (wipc) *attbclear setequal(c=15~Download~) goto (wipc) *setkbutton setequal(c=07~kill~Kill~) goto (wipc) *unsetkbutton setequal(c=07~kill~UnKill~) goto (wipc) *setk SetEqual(/nvkilled=NO) if(%ARESP%)=(DELETED) then SetEqual(/nvkilled=YES) ret *endm setequal(c=13~There is no more message text.~No More Text~1~) jump (okbox0) setequal(c=0A~) jump (wipc) goto (prompt0) *wipAsk loadsub(control\wipask.ctl) ret *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret BADSELCTLzif (%nv%nobad%)=(1) then goto (nobad) if (%nv%wipmode%)=(1) then goto (wip) Say(&12&&CR&Invalid selection! Please try again...*) SetEqual(/nvqueue=) if (/:EXPERT/)=(N) then SecPause (1) say() FlushOut Return *nobad setnv(nobad=0) return *wip writeln() loadsub(control\wipsound.ctl,setnv(file=notncomp.wav)) writeln(Invalid selection! Please try again...) setequal(c=13~Invalid selection! Please try again...~Invalid Selection~1~) jump (okbox0) flushout setnv(norefresh=1) writeln() return *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(200) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) if(%ARESP%)<>(6) THEN FLUSHOUT IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret MSGSTRTCTL¼ setnv(d=) setnv(flines=0) setnv(carea=0) setnv(searchf=searchf) inpclose setnv(CurFMode=1) *tt0 *thetop *initBox setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=startn)) setequal(c=07~Bar~Low Message #: %nv%n%, High Message #: %nv%f0%~) jump (wipc) setequal(c=0A~) jump (wipc) *GetResp0 if (%nv%wiprestreq%)=(1) then goto (thetop) setequal(c=0A~) jump (wipc) goto (getInput) *bgi writeln(Response from user: "%resp%") if (%nv%wiprestreq%)=(1) then goto (thetop) if (%resp%)=(Exit) then goto (ret4) if (%resp%)=(quit) then goto (ret4) setequal(b=%resp%) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) ;if (%var%b)=(-1) then goto (more) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then upcase(b) get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif if (%nv%wipc%)=(msgnumber) then return *NoCmnd setnv(wtxt=) goto (getResp0) *listfa seek(%pbtemp%wiplist.%node%) ifnottrue(goto(donef)) inpopen(%pbtemp%wiplist.%node%,4) setnv(d=0) setnv(m=0) setnv(e=0) setnv(f=0) *more setequal(u=0) setequal(d=%nv%d%) setequal(m=%nv%m%) setequal(e=%nv%e%) setequal(f=%nv%f%) fendif(donea) *stLoop inc(u) inc(d) inpread writeln(%aresp%) if (%aresp%)=() then setequal(/aresp= ) setequal(c=07~listbox~%aresp%~) jump (wipc) if (%var%u)>(%nv%high%) then goto (donef) fendif(donea) goto(stloop) *done inpclose cnvtk(%var%e) setequal(c=07~listbox~ -- End of File Listing --~) jump (wipc) goto (donef) *none setequal(c=07~listbox~There are no files in this area.~) jump (wipc) goto (donef) *NoMore if (%nv%high%)=() then goto (ga0) ; writeln(No more matches to the text you specified could be found.) ; setequal(c=13~No more matches to the text you specified could be found.~End of List~1~) ; jump (okbox0) goto (donef) ; goto (getresp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(50) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *getinput writeln(Waiting for input from remote user.) setequal(y=180) writeln(loading wipask.ctl) loadsub(control\wipask.ctl) writeln(back from wipask.ctl (1)) if (%aresp%)<>(24) then goto (bgi) writeln(loading time warning.) loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) writeln(loading wipask.ctl (2)) loadsub(control\wipask.ctl) writeln(back from wipask.ctl (2)) if (%aresp%)=(24) then loadmem(control\timeout.ctl) writeln(going back to bgi) goto (bgi) *donef ;inc(d) setnv(d=%var%d) setnv(m=%var%m) setnv(e=%var%e) setnv(f=%var%f) write(Updating list box on user's screen ... ) setequal(c=07~listbox~-1~) jump (wipc) setequal(c=0F~listbox~Change File Area~1~1~2~) jump (wipc) setequal(c=0F~RecCount~20~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) setequal(c=0A~) jump (wipc) writeln(Done!) goto(getresp0) *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *notext writeln(No text was specified. Enter some text to search for and try again...) setequal(c=13~No text was specified. Please enter some text to search for and try again or click "quit" to exit.~No Text Specified~1~) jump (okbox0) goto (getresp0) *doAdd loadsub(control\macros\tag-wip.ctl) goto(thetop) *okbox0 Jump (wipc) *tryr0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (tryr0) ret *ret4 setnv(d=) inpclose return *dispscr setnv(high=21) setnv(NoInfo=1) loadsub(control\ewipscr.ctl,setnv(wipf=%nv%searchf%)) ret *dispCurMode if (%nv%curfMode%)<>(1) then goto (not1) setequal(c=07~status~Now in TAG MODE. To tag a file, click on the filename you want in the box below:~) jump(wipc) *not1 if (%nv%curfmode%)<>(2) then goto (not2) setequal(c=07~status~Now in DOWNLOAD MODE. To download a file, click on the filename you want in the box below:~) jump (wipc) *not2 if (%nv%curfmode%)<>(3) then ret setequal(c=07~status~Now in VIEW MODE. To view a file, click on the filename you want to view in the box below:~) goto (wipc) *tagmode setnv(curfmode=1) jump (dispcurmode) goto (getresp0) *downmode setnv(curfmode=2) jump (dispcurmode) goto (getresp0) *viewmode setnv(curfmode=3) jump (dispcurmode) goto (getresp0) *downloadit setnv(filename=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) loadsub(control\exitwip.ctl) loadsub(control\macros\down.ctl) setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (thetop) ;goto (InitBox) *tagit setnv(filename=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) loadsub(control\macros\tag-wip.ctl,goto(dotag)) setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (getresp0) ;goto (InitBox) *viewit setnv(key=%var%d) setnv(ctext=%var%d) setnv(fromsub=1) inpclose setnv(flwd=%nv%d%) upcase(d) find(&d,.TXT) if (%aresp%)>(0) then goto (txt) find(&d,.ASC) if (%aresp%)>(0) then goto (txt) loadsub(control\exitwip.ctl) setnv(filename=%nv%key%) loadsub(control\macros\zview.ctl) *bk setnv(d=%nv%flwd%) setnv(flwd=) inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) goto (thetop) ;goto (InitBox) *txt loadsub(control\macros\freadwip.ctl) goto (bk) *ssetup setNv(key=%nv%Ctext%) setnv(searchf=flist) goto (tt0) *uparea if (%nv%carea%)=>(%maxfarea%) then goto (donef) addvar(%nv%carea%+1=a) setnv(carea=%var%a) selfarea(%var%a) enufsec(%filsec%) ifnottrue(goto (uparea)) numb(No) setnv(fn=%filpath%files.bbs) if (%CD%)=(Yes) then setnv(fn=%CDPATH%%var%a\files.bbs) write(Retrieving file listing for area #%var%a...) inpclose listlog() ;zap(%pbtemp%wiplist.%node%) appendto(%pbtemp%wiplist.%node%, -- File Area #%var%a: %filname% --) lines(%nv%fn%) setequal(g=%aresp%) addvar(%aresp%+%flines%=c) setnv(flines=%var%c) listlog(%pbtemp%wiplist.%Node%) setequal(k=1) fsearch(%nv%fn%,12,15,7,11,3,%nv%key%,%var%k,%var%g) listlog() writeln(Done!) if (%nv%d%)=() then ret inpopen(%pbtemp%wiplist.%node%,4) inpread(%nv%d%) ret *donea setnv(d=%var%d) inpclose jump (uparea) goto (stloop) WIPHDRCTLM setequal(x=0) setequal(s=0) setequal(c=07~msgnumber~%msgnumber%~) jump (wipc) setequal(f=%nv%f0%) write(Message # %msgnumber% of %var%f sent on ) setequal(c=07~varf~%var%f~) jump (wipc) nicedate(%MSGSNTD%) write(%aresp% at ) setequal(c=07~sentd~%aresp%~) jump (wipc) nicetime(%MSGSNTT%) writeln(%aresp%) setequal(c=07~sentt~%aresp%~) jump (wipc) niceequal(b=%msgfrom%) writeln(Sent by: %var%b) setequal(c=07~sentb~%var%b~) jump (wipc) niceequal(b=%msgto%) writeln(Addressed to: %var%b) setequal(c=07~addrto~%var%b~) jump (wipc) writeln(Regarding: %msgdesc%) setequal(c=07~regarding~%msgdesc%~) jump (wipc) niceequal(b=%msgpvt%, %msgrcvd%, Read %msgrdtimes% times, %replies%) If(%NV%KILLED%)=(YES) then setequal(b=%var%b, DELETED) writeln(Status: %var%b) setequal(c=07~status~%var%b~) jump (wipc) setequal(b=None) setnv(attf=) if (%MSGATTACH%)=(Y) then setnv(attf=1) setequal(b=) if (%MSGPVT%)=(PRIVATE) then setequal(s=10) setequal(b=* File Attached: %MSGATTNAME% ) If(%STOREDEXT%)=() then size(%ATTPAT%%ATTN0%.%ATTEXT%) NotIf(%STOREDEXT%)=() then size(%ATTPAT%%ATTN0%.%STOREDEXT%) setequal(b=%var%b%ARESP% bytes -- Time to download: ) TTime(%ARESP%) setequal(b=%var%b%ARESP%) endif setequal(c=07~attachinfo~%var%b~) jump (wipc) return *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(45) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) RET *NOC0 log(<<,Carrier lost.) quitbbs *initbox setequal(c=07~msgtxt~-1~) jump (wipc) setequal(c=0F~msgtxt~In-Box Message~1~1~2~) jump (wipc) setequal(c=0F~RecCount~20~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) return SYSINFOCTLloadsub(control\exitwip.ctl) clearscr Display(display\sysinfo) Say(&CR&&12&BBS SOFTWARE:) Say(&15&Powerboard(TM) Bulletin Board System, Ver. %ver%) Say(Copyright 1991-95 NuIQ(TM) Software Inc.) Say(All Rights Reserved.&CR&) AddComma(%CALLERS%) Say(&3&You are caller #%ARESP%) nicedate(%since%) Say(&3&This BBS has been online since %aresp%) nicetime(%filupt%) setequal(a=%aresp%) nicedate(%filup%) Say(The last upload to the file area was on %aresp% %var%a) nicetime(%msgupt%) setequal(a=%aresp%) nicedate(%msgup%) Say(The last message entered was written on %aresp% %var%a) Say(The last user online was *) NiceSay(%LASTU%) Say(&CR&&12&OPERATING SYSTEM:) Say(&15&Microsoft(R) MS-DOS, Ver. %DOSVER%, Copyright Microsoft Corporation) Say(All Rights Reserved.) LoadSub(control\macros\time.ctl) ;enter if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return MENTERCTL╠(SetEqual(a=5) If (%MSGFNET%)=(Y) Then SetEqual(/nvnet=Y) If (%MSGFNET%)=(Y) Then Goto (nonet) If (%MSGNET%)=(N) Then Goto (nonet) Say( &15&Would you like to send this via NetMail? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) SetEqual(/nvnet=%RESP%) *nonet If (%GRAPHICS%)=(ASCII) Then Goto (STMESSG) If (/:FLAG2/)=(Yes) then SetMode(full) Goto(MoreStuff) endif SetMode(Line) Say(&CR&&15& Would you like to use the full-screen editor? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If (%RESP%)=(Yes) Then SetMode(full) *MoreStuff If(&z)<>(15) then Goto(Stmessg) Say(&15& Would you like to quote from the original message? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If(%RESP%)=(Yes) then Goto(Quote) *stmessg If (%FULL%)=(Yes) Then Goto (fmode) if (%graphics%)=(RIP) then clearscr Say(&CR&&14&You can start typing in your message now. When you're finished with) Say(the message, press (&11&ENTER&14&) on a blank line.&CR&&CR&&3& (--------/---------/---------/---------/---------/---------/---------/----)) CarrierL(Y) NotIf (&k)=(20) Then inittxt If (&k)=(20) Then setmax(%var%p) If (&k)=(20) Then Goto (stedit) setwrap() GetText(15,7,1,200) if (%nv%fromssc%)=(1) then goto (fromssc) setwrap() say() *ent NotIf (&z)=(15) Then display (display\ENTER) If (&z)=(15) Then display(display\REPLY) Say(&15&What would you like to do with the message?&12&: &14&*) MenuKey BigNiceSay (u:upload,t:Throw Away,s:Save,e:Edit,a:Add,L:List,c:Change,m:Modify,d:Delete Line,h:help,i:Insert,f:Full Screen Mode Toggle) If (&z)=(15) Then bignicesay(q:Quote) If (&k)=(30) Then BigIf (c:modi) BigIf (u:upload,t:abort,s:save,e:edit,L:list,a:iadd,m:mod,d:del,?:help,h:help,i:insert,f:fulltoggle) BigIf(c:chg) If (&z)=(15) Then BigIf(q:quote) Linefeed(1) Say(&CR&&12&Invalid selection ... Please try again.&CR&) FlushOut Goto (ent) *modi Say(&CR&%hRed%Option not available in Comment.&CR&) Goto (ent) *help NotIf (&z)=(15) Then display(display\help\enter,/:SEC/) If (&z)=(15) Then display(display\help\reply,/:SEC/) Goto (ent) *upload loadsub(control\macros\uptext.ctl) goto (add) *Quote LoadSub(control\macros\quote.ctl) Goto (add) *netImp *FullToggle If(/:GRAPHICS/)=(ASCII) then Goto(NoFullAllowed) If(%FULL%)=(Yes) then SetMode(line) Say(&CR&&14&Full Screen Mode is now &15&OFF) Goto(ent) endif SetMode(full) Say(&CR&&14&Full Screen Mode is now &15&ON) Goto(ent) *NoFullAllowed Say(&CR&&12&You are currently in ASCII mode. You must be in at least ANSI mode) Say(in order to use the Full Screen Editor!&CR&) Goto(ent) *del showtxtl(11,3) cMenuAsk (&CR& &3&Please enter the first line to delete&12&: &15&*) Number(%RESP%) IfNotTrue (Goto (invn)) cmpval(%RESP%,%MAXLINE%) IfNotTrue (NotIf (%RESP%)=(%MAXLINE%) Then Goto (invn)) SetEqual(e=%RESP%) Say(&CR&&10&If you only want to delete one line, press (&11&ENTER&10&) here.) cMenuAsk (%CRON%&3& Please enter the last line to delete&12&: &15&*) SetEqual(g=%RESP%) If (&g)=(<CR>) Then SetEqual(g=%var%e) Say(&CR&&14&You have selected to delete the following block of text:) ShowTxtT(15,7,%VAR%E,%VAR%G) Say(&15&Are you sure you want to delete this text? (&12&Y&15&/&12&N&15&)&14&*) Back(4) SetEqual(/nvyndef=%YESNODEF%) Default(N) YesNoAsk(*) Default(%NV%YNDEF%) SetNv(yndef=) NotIf(%RESP%)=(Yes) then goto(delabort) DelLines(%var%e,%var%g) If (%ARESP%)=(ERROR) Then Goto (invn) Say(&CR&&11&Lines %var%e to %var%G have been deleted.) Goto (ent) *delabort Say(&CR&&12&Delete text aborted...) Goto(ent) *chg If(&z)=(15) then Goto(ModCCList) Say(&CR&&15&To whom do you want to send this message?&12&:&15&( )&14&*) Back(21) SetFill(%nv%addressee%) cMenuAsk(*) killperc SetEqual(a=%RESP%) SetEqual(/nvaddressee=%RESP%) SeekUser(%RESP%) SetEqual(c=%NDNUMB%) SetEqual(/nvtousernum=%NDNUMB%) SetEqual(d=2) If (%ARESP%)=(No) Then Goto (notfound) *ModCCList If (%NV%CCs%)>(0) then Say(&CR&&15&Edit Carbon Copy List? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If(%RESP%)=(Yes) then Goto(EditCCList) endif Say(&CR&&15&Would you like to Carbon Copy this message? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If(%RESP%)=(Yes) then Goto(EditCCList) Goto (ent) *EditCCList LoadSub(control\macros\editccs.ctl) Goto(ent) *mod Say(&CR&&15&What is this message about?&12&:&15&( )&14&*) Back(21) SetFill(%nv%subject%) cAsk(%LEN%20%*) killperc SetEqual(b=%RESP%) SetEqual(/nvsubject=%RESP%) setequal(z=%var%b) upcase(b) find(%var%b,SYSP) iftrue(setequal(z=)) setequal(b=%var%z) Goto (ent) *edit If (%FULL%)=(Yes) Then Goto (add) cMenuAsk (&CR&&15&Which line would you like to edit?&12&: &14&*) Number(%RESP%) IfNotTrue (Goto (invn)) If (%RESP%)=(%MAXLINE%) Then Goto (goedit) linefeed(1) cmpval(%RESP%,%MAXLINE%) If (%ARESP%)=(No) Then Goto (Invn) *goedit SetEqual(h=%MAXLINE%) setnv(s=%resp%) setwrap() *goed2 gettext(15,7,%nv%s%,%nv%s%) if (%nv%fromssc%)=(1) then goto (fssc2) setwrap() setmax(%var%h) setnv(s=) Goto (ent) *fssc2 say( |) setnv(fromssc=) goto(goed2) *invn Say(&14&That line number doesn't exist in this message. &11&Try again, please.&CR&) Goto (ent) *add resetpause spause(0) CarrierL(Y) If (%FULL%)=(Yes) Then Goto (fmode) ClearScr Say(&14&You may now continue your message. Press (&11&ENTER&14&) to end the message.&CR&) Say(&3& (--------/---------/---------/---------/---------/---------/---------/----)) CmpValO(%MAXLINE%,%VAR%A) IfTrue(Goto(Shortmess)) AddVar(%MAXLINE%+-%VAR%A=b) AddVar(%VAR%b+-1=c) AddVar(%VAR%C+%VAR%A=c) If(%VAR%B)<(1) then SetEqual(b=1) *ShowIt showtxtt(15,7,%VAR%B,%VAR%C) setwrap() *GetIt gettext(15,7,%MAXLINE%,200) if (%nv%fromssc%)=(1) then goto (fromssc) setwrap() delextra Goto (ent) *save SetEqual(x=) SetEqual(/nvattach=) SetNv(ATTFNAME=) SetEqual(/nvattext=) If (%nv%net%)=(Yes) Then Goto (stsave) ; don't allow attaches in netmail confs If (/:FLAG1/)=(Yes) Then Goto(stsave1) Say(&CR&&15&Would you like to attach a file to this message? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If (%RESP%)=(No) Then Goto (stsave1) loadsub(control\macros\savevars.ctl) loadsub(control\EnterAtt.ctl) loadsub(control\macros\restvars.ctl) *stsave InpLine(%pbtemp%varr.%NODE%,1) SetEqual(r=%ARESP%) *stsave1 Say(&CR&&11&Saving your message, please wait...*) if (%Msgfpvt%)=(Y) then setequal(k=Y) if (&z)=(15) then kill(%pbtemp%quote.%node%) SetEqual(/nvccing=0) NotIf(%NV%CCs%)=(0) then goto(beforeCCline) *SaveIt SetEqual(/nvccing=) NotIf (&z)=(15) Then writemsg(/:LASTMSG/,%nv%addressee%,%nv%addresser%,%nv%subject%,%nv%tousernum%,%nv%msgpvt%,0,%nv%net%,%NV%ATTFNAME%,%NV%ATTEXT%) If (&z)=(15) Then writemsg(/:LASTMSG/,%nv%addressee%,%nv%addresser%,%nv%subject%,%nv%tousernum%,%nv%msgpvt%,%nv%orignum%,%nv%net%,%NV%ATTFNAME%,%NV%ATTEXT%) SetEqual(a=/:MSENT/) Inc(a) SetEqual(/MSENT=%VAR%A) Say(Saved!) NotIf(%NV%CCs%)=(0) then Goto(ccstuff) *GetBackHere himsg(/:LASTMSG/) AddComma(%ARESP%) notif (&z)=(15) then log(--,Message (%ARESP%) entered in area #/:LASTMSG/) setnv(t=%aresp%) addcomma(%nv%orignum%) if (&z)=(15) then log (--,Reply (%nv%t%) to #%aresp% entered in area #/:lastmsg/) setnv(t=) ;APPENDTO (MAILBOX\%VAR%C./:LASTMSG/,%ARESP%) if (&z)=(15) then himsg(/:lastmsg/) If (&z)=(15) Then SetEqual(f=%ARESP%) If (&z)=(15) Then lowmsg(/:LASTMSG/) If (&z)=(15) Then SetEqual(n=%ARESP%) NotIf (&k)=(20) Then Goto (smsg) himsg(/:LASTMSG/) redo (/:LASTMSG/,%var%q,%ARESP%) *smsg If(%NV%CCs%)=(0) then Say(&4&-- Message Sent --) NotIf(%NV%CCs%)=(0) then Say(&4&-- Messages Sent --) SetEqual(/nvaddressee=) SetEqual(/nvtousernum=) SetEqual(/nvsubject=) SetEqual(/nvATTFNAME=) SetEqual(/nvattext=) SetEqual(/nvnet=) SetEqual(/nvorignum=) Goto (abt) *list SetNv(mode=%FULL%) SetMode(line) linefeed(1) showtxtl(11,3) linefeed(1) enter If(%NV%MODE%)=(Yes) then SetMode(Full) SetNv(mode=) Goto (ent) *abort Say(&CR&&15&Are you sure you want to throw this message away? (&12&Y&15&/&12&N&15&)&14&*) Back(4) SetEqual(/nvyndef=%YESNODEF%) Default(N) YesNoAsk(*) Default(%NV%YNDEF%) NotIf(%RESP%)=(Yes) then Goto(Ent) Say(&CR&&12&Your message has been thrown away.) *abt inittxt SetMode(reg) goto (doret) *notfound eline(70) SetEqual(c=0) Say( Their name could not be found. ) say( &15&Would you like to send the message anyway? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If (%RESP%)=(No) Then Goto (abt) Goto (ent) *stedit showtxt2(15,7) setwrap() gettext(15,7,%var%p,200) if (%nv%fromssc%)=(1) then goto (fromssc) setwrap() Goto (ent) *notenufs display(display\nospce) Goto (stsave) *aborted SetEqual(x=) FlushOut Log(--,Attach upload aborted (%var%x)) Display(display\attabt) Goto (stsave) *alreadyhere Display (display\HERENOW) Goto (pok) *fmode LoadSub(control\macros\fulledit.ctl) Goto (ent) *CCStuff LoadSub(control\macros\ccmsgs.ctl) Goto(GetBackHere) *ShortMess SetEqual(b=1) SetEqual(c=%MAXLINE%) AddVar(%VAR%C+-1=c) If(&c)=(0) then Goto(GetIt) Goto(ShowIt) *Iadd SetEqual(a=5) Goto(Add) *insert Capture(%pbtemp%ins1.%NODE%,%MAXLINE%) *insask CMenuAsk(&CR&&15&Insert text before what line number? &14&*) Number(%RESP%) IfNotTrue(Goto(NotNumber)) SetEqual(/nvinsbefore=%RESP%) LoadSub(control\macros\insert.ctl) Goto(ent) *notnumber Say(&CR&&12&That is an invalid line number! Please re-enter...) Goto(insask) *BeforeCCLine Kill(%pbtemp%cc1.%NODE%) SetEqual(/nvorigaddr=%NV%ADDRESSEE%) Capture(%Pbtemp%cc1.%NODE%,%MAXLINE%) LoadSub(control\macros\ccline.ctl) Goto(SaveIt) *NoCarrier Kill(INTMSGS\%USERN%.MES) Capture(INTMSGS\%USERN%.MES,%MAXLINE%) Zap(INTMSGS\%USERN%.HDR,%NV%ADDRESSEE%) AppendTo(INTMSGS\%USERN%.HDR,%NV%TOUSERNUM%) AppendTo(INTMSGS\%USERN%.HDR,%NV%SUBJECT%) AppendTo(INTMSGS\%USERN%.HDR,%NV%ADDRESSER%) AppendTo(INTMSGS\%USERN%.HDR,%NV%MSGPVT%) AppendTo(INTMSGS\%USERN%.HDR,%NV%ORIGNUM%) AppendTo(INTMSGS\%USERN%.HDR,%NV%NET%) AppendTo(INTMSGS\%USERN%.HDR,/:LASTMSG/) QuitBBS *fromssc setnv(fromssc=0) say( |) goto(getit) *doret if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return INSERTCTL¬ setwrap() *insert inittxt resetpause If (%FULL%)=(Yes) Then Goto (fmode) ClearScr Say(&14&You may now enter text to insert into the message. Press (&11&ENTER&14&) to end.&CR&) Say(&3& (--------/---------/---------/---------/---------/---------/---------/----)) If(%MAXLINE%)>(1) then showtxt2(15,7) *getit gettext(15,7,%MAXLINE%,99) if (%nv%fromssc%)=(1) then goto (fromssc) delextra Goto(ent) *save Kill(%pbtemp%ins2.%NODE%) Capture(%pbtemp%ins2.%NODE%,%MAXLINE%) Inpopen(%pbtemp%ins1.%NODE%) SetEqual(l=1) Kill(%pbtemp%ins3.%NODE%) DO Inpread inc(l) AppendTo(%pbtemp%ins3.%NODE%,%ARESP%) NotIf(&l)<(%NV%INSBEFORE%) then Goto(OtherIns) EOFLOOP kill(%pbtemp%ins4.%NODE%) DO Inpread NotIf(%ARESP%)=() then AppendTo(%pbtemp%ins4.%NODE%,%ARESP%) EOFLOOP InpClose loadexec(command.com,/c copy %pbtemp%ins3.%NODE%+%pbtemp%ins2.%NODE%+%pbtemp%ins4.%NODE% %pbtemp%insert.%NODE% >nul) ;loadexec(command.com,/c copy %pbtemp%ins1.%NODE%+%pbtemp%ins2.%NODE% %pbtemp%insert.%NODE% >nul) inittxt Enter import(%pbtemp%insert.%NODE%,,1,100) delextra Say(&CR&&12&The text has been inserted into your message.) Return *ent display (display\FWD) Say(&3&What would you like to do with the text to be inserted?&12&: &15&*) MenuKey BigNiceSay (t:Throw Away,s:Save,e:Edit,a:Add,L:List,d:Delete Line,h:help) BigIf (t:abort,s:save,e:edit,L:list,a:add,d:del,h:help) Say(&CR&&12&Invalid selection ... Please try again.&CR&) FlushOut Goto (ent) *help ;NotIf (&z)=(15) Then display(display\help\fwd,/:SEC/) Say(&12&Help is currently unavailable for this prompt.) SecPause(3) Goto (ent) *del showtxtl(11,3) cMenuAsk (&CR& &3&Please enter the first line to delete&12&: &15&*) Number(%RESP%) IfNotTrue (Goto (invn)) cmpval(%RESP%,%MAXLINE%) IfNotTrue (NotIf (%RESP%)=(%MAXLINE%) Then Goto (invn)) SetEqual(e=%RESP%) Say(&CR&&10&If you only want to delete one line, press (&11&ENTER&10&) here.) cMenuAsk (%CRON%&3& Please enter the last line to delete&12&: &15&*) SetEqual(g=%RESP%) If (&g)=(<CR>) Then SetEqual(g=%var%e) Say(&CR&&14&You have selected to delete the following block of text:) ShowTxtT(15,7,%VAR%E,%VAR%G) Say(&15&Are you sure you want to delete this text? (&12&Y&15&/&12&N&15&)&14&*) Back(4) SetEqual(/nvyndef=%YESNODEF%) Default(N) YesNoAsk(*) Default(%NV%YNDEF%) SetEqual(/nvyndef=) NotIf(%RESP%)=(Yes) then goto(delabort) DelLines(%var%e,%var%g) If (%ARESP%)=(ERROR) Then Goto (invn) Say(&CR&&11&Lines %var%e to %var%G have been deleted.) Goto (ent) *delabort Say(&CR&&12&Delete text aborted...) Goto(ent) *list linefeed(1) showtxtl(11,3) ;showtxtL is the same as showtxt except shows line numbers... linefeed(1) enter Goto (ent) *edit If (%FULL%)=(Yes) Then Goto (add) cMenuAsk (&CR&&3&Which line would you like to edit?&12&: &15&*) Number(%RESP%) IfNotTrue (Goto (invn)) If (%RESP%)=(%MAXLINE%) Then Goto (goedit) linefeed(1) cmpval(%RESP%,%MAXLINE%) If (%ARESP%)=(No) Then Goto (Invn) *goedit SetEqual(h=%MAXLINE%) setnv(a=%resp%) *edt0 gettext(15,7,%nv%a%,%nv%a%) if (%nv%fromssc%)=(1) then goto (edt0) setmax(%var%h) setnv(a=) setwrap() Goto (ent) *invn Say(&14&That line number doesn't exist in this message. &11&Try again, please.&CR&) Goto (ent) *abort Kill(%pbtemp%ins2.%NODE%) loadexec(command.com,/c copy %Pbtemp%ins1.%NODE% %pbtemp%insert.%NODE% >nul) Return *fromssc setnv(fromssc=) say ( |) goto (getit) NEWBADCTL|*NewBad freespace(%CDRIVE%:) if (%ARESP%)<(%MINSPACE%) then log(!!,Drive space low.) quitbbs endif appendto(badnames.bbs,%name%) log(--,User attempted log on with false info.) if (%resp%)<>(%RESP%) then Log(!!,%NAME%'s Reason: "%RESP%") Zap(MSG.%NODE%,This message has been automatically generated for you by Powerboard.) AppendTo(MSG.%NODE%,) AppendTo(MSG.%NODE%,A new user attempted to logon to the BBS with the name %NAME%) AppendTo(MSG.%NODE%,at %TIME% on %DATE%. The information entered by this user was either) AppendTo(MSG.%NODE%,false, or duplicated the information of a user currently on record.) if (%resp%)<>() then AppendTo(MSG.%NODE%,The user offered the following explanation for this false information:) AppendTo(MSG.%NODE%,) AppendTo(MSG.%NODE%,%RESP%) endif AppendTo(MSG.%NODE%,) AppendTo(MSG.%NODE%,If you wish to allow this user to re-logon to your BBS as a new user) AppendTo(MSG.%NODE%,under the same name, you must edit the BADNAMES.BBS file in your main) AppendTo(MSG.%NODE%,BBS directory and remove this user's name and edit the PHONES.DAT file) appendto(MSG.%NODE%,which is also in the main BBS directory and remove the user's phone) appendto(MSG.%NODE%,number, which is "\:phone\".) AppendTo(MSG.%NODE%,) SeekUser(%SYSOP%) SetNv(tousernum=%NDNUMB%) If(%ARESP%)=(No) then SetNv(tousernum=1) ;if the sysop cannot be located in user file, assume sysop is user #1 InitTxt Lines(MSG.%NODE%) Import(MSG.%NODE%,,1,%ARESP%) setnv(la=/:lastmsg/) selarea(1) Writemsg(1,%SYSOP%,Powerboard BBS,New Logon With False Info,%nv%tousernum%,Yes,0,No,,) selarea(%nv%la%) Kill(MSG.%NODE%) quitbbs FLISTCTL¼ if (%NV%WIPMODE%)=(1) then loadmem(control\macros\flistwip.ctl) setequal(/numb3=0) setequal(/numb3s=0) numb(Yes) setequal(y=5) clearscr setequal(k=0) if (%CD%)=(No) then display(%FILPATH%header) if (%CD%)=(Yes) then display(%CDPath%/:lastdown/\header) setnv(fn=%filpath%files.bbs) if (%CD%)=(Yes) then setnv(fn=%CDPATH%/:lastdown/\files.bbs) if (%Y%)=(25) then goto (blist) if (%Y%)=(23) then goto (blist) addvar(%y%+-1=k) ;addvar(%y%+0=k) spause(%var%k) setequal(K=0) *blist jump(initscreen) jump(pauseprompt1) lines(%nv%fn%) fdisp(%nv%fn%,12,15,7,11,3,%var%k,%aresp%) ;if (%CD%)=(No) then fsearch(%FILPATH%files.bbs,12,15,7,11,3,,1,1,%var%k) ;if (%CD%)=(Yes) then fsearch(%CDPath%/:lastdown/\files.bbs,12,15,7,11,3,,1,1,%var%k) spause(0) if (%ARESP%)=(No) then goto (err) ;if (%graphics%)=(RIP) then ; say(@CR@$7$&0&END$0$&15&) ; defpause(!|1K|S010F|k00|N01|N00|KB4QEB4QE|KB4QEB4QE|S0100|K00I210QE|J10|n2000|M08|fZKQO|c0F|=001EKF01|W00|Y00000209|1B00000207QI03010E0F080700000F07000000|1U00I26YKU0000<>View<>V|1B00000207QI03010E0F080700000F07000000|1U6YI2DWKU0000<>Download<>D|1B00000207QI03010E0F080700000F07000000|1UDWI2KUKU0000<>Tag<>T|) ; defpause(%defpause%1B00000207QI03010E0F080700000F07000000|1UKUI2RSKU0000<>Help<>H|1B00000207QI03010E0F080700000F07000000|1URSI2YQKU0000<>Quit<>|#|#|#) ;endif ;if (%GRAPHICS%)<>(RIP) then defpause($7$&0&END$0$&3& &11&V&3&:View, &11&D&3&:Download, &11&T&3&:Tag, &11&H&3&:Help or &11&ENTER&3& to Quit?&12&: &7&) defPif(v:view2,h:fhlp,t:tag2,d:down2) setequal(/nonstop=0) pauseprompt jump(pauseprompt) numb(No) Return *fhlp setequal(k=%ARESP%) jump(pauseprompt) display(display\help\lst,/:SEC/) goto (blist2) *err jump(pauseprompt) display(display\NOFILES) enter Numb(No) comprint(!|*|#|#|#) Return *view2 setequal(k=%ARESP%) loadsub(control\macros\savevars.ctl) loadsub(control\macros\zview.ctl) loadsub(control\macros\restvars.ctl) goto (blist2) *tag2 setequal(k=%ARESP%) loadsub(control\macros\numbtag.ctl) goto (blist2) *down2 setequal(k=%ARESP%) loadsub(control\macros\savevars.ctl) loadsub(control\macros\down.ctl) loadsub(control\macros\restvars.ctl) selfarea(/:Lastdown/) goto (blist2) *blist2 setequal(/numbto=0) spause(0) ;if (%GRAPHICS%)<>(RIP) then clearscr clearscr goto (blist) *Pauseprompt1 ;if (%GRAPHICS%)=(RIP) then ; defpause(!|1K|S010F|k00|N01|N00|KB4QEB4QE|KB4QEB4QE|S0100|K00I210QE|J10|n2000|M08|fZKQO|c0F|=001EKF01|W00|Y00000209|1B00000207QI03010E0F080700000F07000000|1U00I26YKU0000<>Stop1<>S|1B00000207QI03010E0F080700000F07000000|1U6YI2DWKU0000<>Nonstop<>N|1B00000207QI03010E0F080700000F07000000|1UDWI2KUKU0000<>View<>V|1B00000207QI03010E0F080700000F07000000) ; defpause(%defpause%|1UKUI2RSKU0000<>Download<>D|1B00000207QI03010E0F080700000F07000000|1URSI2YQKU0000<>Tag<>T|1B00000207QI03010E0F080700000F07000000|1U00KU6YNM0000<>Help<>H|1B00000207QI03010E0F080700000F07000000|1U6YKUDWNM0000<>Continue<>C|#|#|#) ;endif ;if (%GRAPHICS%)<>(RIP) then DefPause($7$&0&More$0$&3& &11&S&3&:Stop, &11&N&3&:Nonstop, &11&V&3&:View, &11&D&3&:Download, &11&T&3&:Tag, &11&H&3&:Help or &11&C&3&:Continue?&12&: &7&) defPif(s:stop,n:nonstop,v:view2,h:fhlp,t:tag2,d:down2) ret *Pauseprompt ;if (%GRAPHICS%)=(RIP) then defpause(!|1K|S010F|k00|N01|N00|KB4QEB4QE|KB4QEB4QE|S0100|K00I210QE|J10|n2000|M08|fZKQO|c0F|=001EKF01|W00|Y00000209|1B00000207QI03010E0F080700000F07000000|1U00I26YKU0000<>Stop<>S|1B00000207QI03010E0F080700000F07000000|1U6YI2DWKU0000<>Nonstop<>N|1B00000207QI03010E0F080700000F07000000|1UDWI2KUKU0000<>Continue<>C|#|#|#) ;if (%GRAPHICS%)<>(RIP) then DefPause($7$&0&Send more text$0$&3& &11&S&3&:Stop, &11&N&3&:Nonstop or &11&C&3&:Continue?&12&: &7&) defPif(s:stop,n:nonstop) ret *InitScreen ;if (%graphics%)=(RIP) then ; say(!|*|1K|S010F|k00|N01|N00|KB4QEB4QE|KB4QEB4QE|S0100|K00I210QE|J10|n2000|M08) ; say(!|fZKQO|b0000ZII2280S0002X000|#|#|#) ;endif ret return ;; END OF FILE VIEWFILECTL∞loadsub(control\exitwip.ctl) ask(&15&Enter the filename to view? (ENTER=Quit)&14&*) if (%resp%)=() then goto (doret) clearscr view(%resp%) enter *doret if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return EXECCTL╪loadsub(control\exitwip.ctl) ask(&15&Enter the command to execute? &14&*) if (%resp%)=() then goto (doret) exec(%resp%) enter *doret if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return HPHONECTLé*thetop0 Say(&15&Do you have an international phone number? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) SetNv(intl=%RESP%) If(%RESP%)=(No) then Goto(normal) menuask(%MIN%1%&CR&&15&What is your home phone number?&12&: &14&*) Len(%RESP%) If(%ARESP%)<(10) then Goto(dp2) repeating(%resp%) iftrue(goto (dp)) SetEqual(/PHONE=%RESP%) *logandret If(%NV%NEWUSER%)<>(Yes) then Log(--,Changed Phone # to %RESP%) return *dp2 say(&CR&&12&You have entered an invalid phone number!&7&&CR&) goto (thetop0) *dp log(!!,User attempted to change phone) log(!!,number to %RESP%, but is) log(!!,an invalid/existing phone number!) say(&CR&&12&You have entered an invalid phone number!&7&&CR&) SecPause(2) return *normal Say(&CR&&15&Please enter your home phone number&12&: &14&*) Picture(###-###-####) repeating(%resp%) iftrue(goto (dp)) SetEqual(/PHONE=%RESP%) Goto(logandret) STATSWIPCTL╗*thetop setnv(NoInfo=1) if (%handle%)=(Yes) then loadsub(control\ewipscr.ctl,setnv(wipf=stats-a)) if (%handle%)<>(Yes) then loadsub(control\ewipscr.ctl,setnv(wipf=stats)) setequal(c=07~password~/:pass/~) jump (wipc) setequal(c=07~cityst~/:from/~) jump (wipc) setequal(c=07~voice~/:phone/~) jump (wipc) setequal(c=07~company~/:company/~) jump (wipc) setequal(c=07~street~/:street1/~) jump (wipc) setequal(c=07~mhsname~/:mhsname/~) jump (wipc) setequal(c=07~work~/:work/~) jump (wipc) if (%handle%)<>(Yes) then goto (noA) setequal(c=07~alias~/:alias/~) jump (wipc) *noA setequal(c=07~screenlen~/:screenlen/~) jump (wipc) setequal(c=07~protocol~/:protocol/~) jump (wipc) setequal(c=07~attach~/:flag1/~) jump (wipc) setequal(c=07~music~/:ansmusic/~) jump (wipc) setequal(c=07~fullscr~/:flag2/~) jump (wipc) setequal(c=07~avail~/:defavail/~) jump (wipc) setequal(c=07~graphics~/:graphics/~) jump (wipc) setnv(graphics=/:graphics/) setequal(c=07~personal~/:flag3/~) jump (wipc) setequal(c=07~newf~/:flag4/~) jump (wipc) *initBox *GetResp0 setequal(c=0A~) jump (wipc) jump (getInput) writeln(Response from user: "%resp%") if (%nv%wiprestreq%)=(1) then goto (thetop) if (%resp%)=(protocol) then loadsub(control\exitwip.ctl) jump (upgraphics) loadsub(control\macros\defprot.ctl) if (%graphics%)<>(WIP) then loadmem(control\macros\stats.ctl) goto (thetop) endif if (%resp%)=(attach) then setequal(c=/:flag1/) setequal(/flag1=Yes) if (%var%c)=(Yes) then setequal(/flag1=No) setequal(c=07~attach~/:flag1/~) jump (wipc) endif if (%resp%)=(music) then setequal(c=/:ansmusic/) setequal(/ansmusic=Yes) if (%var%c)=(Yes) then setequal(/ansmusic=No) setequal(c=07~music~/:ansmusic/~) jump (wipc) endif if (%resp%)=(fullscr) then setequal(c=/:flag2/) setequal(/flag2=Yes) if (%var%c)=(Yes) then setequal(/flag2=No) setequal(c=07~fullscr~/:flag2/~) jump (wipc) endif if (%resp%)=(avail) then setequal(c=/:defavail/) setequal(/defavail=Yes) if (%var%c)=(Yes) then setequal(/defavail=No) setequal(c=07~defavail~/:defavail/~) jump (wipc) endif if (%resp%)=(personal) then setequal(c=/:flag3/) setequal(/flag3=Yes) if (%var%c)=(Yes) then setequal(/flag3=No) setequal(c=07~personal~/:flag3/~) jump (wipc) endif if (%resp%)=(newf) then setequal(c=/:flag4/) setequal(/flag4=Yes) if (%var%c)=(Yes) then setequal(/flag4=No) setequal(c=07~newf~/:flag4/~) jump (wipc) endif if (%resp%)=(graphics) then setequal(c=%nv%graphics%) if (%var%c)=(ASCII) then setnv(graphics=ANSI) if (%var%c)=(ANSI) then setnv(graphics=RIPscrip) if (%var%c)=(RIPscrip) then setnv(graphics=WIP) if (%var%c)=(RIPSCRIP) then setnv(graphics=WIP) if (%var%c)=(RIP) then setnv(graphics=WIP) if (%var%c)=(WIP) then setnv(graphics=ASCII) setequal(c=07~graphics~%nv%graphics%~) jump (wipc) endif if (%resp%)=(Okay) then goto (ret0) if (%resp%)=(quit) then goto (ret0) setequal(b=%resp%) find(&b,;) if (%aresp%)>(0) then goto (NotListC) find(&b,,) if (%aresp%)<=(1) then goto (NotListC) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) setnv(wipc=%aresp%) get(&b,%var%f,1000) setequal(b=%aresp%) goto (getresp0) *NotListC find(&b,;) if (%aresp%)<=(1) then goto (NoCmnd) addvar(%aresp%+-1=e) addvar(%aresp%+1=f) get(&b,1,%var%e) SetNv(WipC=%aresp%) setnv(cText=) len(%var%b) if (%var%f)<=(%aresp%) then get(&b,%var%f,1000) SetNv(Ctext=%aresp%) endif if (%nv%wipc%)=(password) then setequal(/pass=%nv%Ctext%) if (%nv%wipc%)=(cityst) then setequal(/from=%nv%Ctext%) if (%nv%wipc%)=(voice) then setequal(/phone=%nv%Ctext%) if (%nv%wipc%)=(company) then setequal(/company=%nv%Ctext%) if (%nv%wipc%)=(street) then setequal(/street1=%nv%ctext%) if (%nv%wipc%)=(mhsname) then setequal(/mhsname=%nv%Ctext%) if (%nv%wipc%)=(work) then setequal(/work=%nv%Ctext%) if (%nv%wipc%)=(alias) then setequal(/alias=%nv%Ctext%) if (%nv%wipc%)=(screenlen) then setequal(/screenlen=%nv%Ctext%) *NoCmnd setnv(wtxt=) goto (getResp0) *UserFind setequal(c=14~listbox~1000~11~) jump (wipc) SetActivity (User Find) *Main *Stk ;%NV%KEY% is Search Key if (%nv%key%)=() then goto (notext) log (--,UserFind for:%nv%key%) writeln(Searching for: "%nv%key%") SetEqual(n=1) ;user number to search from *s2 SetEqual(y=0) *Searching SeekUserP(%NV%KEY%,%VAR%N) ifnottrue(goto (nomore)) AddVar(%NDXREC%+1=n) Inc(y) Loaduser (%NDNUMB%) SetEqual(a=\:NAME\) SetLen(a=23) setequal(z=%var%a) SetEqual(a=\:FROM\) SetLen(a=26) setequal(z=%var%z%var%a) setequal(z=%var%z\:LAST\) writeln(%var%z) setequal(c=07~listbox~%var%z~) jump (wipc) writeln(y: "%var%y") if (%var%y)=>(11) then goto (donef) Goto(Searching) *NoMore writeln(No more matches to the text you specified could be found.) setequal(c=13~No more matches to the text you specified could be found.~End of List~1~) jump (okbox0) goto (getresp0) *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(200) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs *wipask loadsub(control\wipask.ctl) ret *getinput writeln(Waiting for input from remote user.) setequal(y=180) jump (wipask) if (%aresp%)<>(24) then ret loadsub(control\wipask.ctl,goto(twarn)) setequal(y=60) jump (wipask) if (%aresp%)=(24) then loadmem(control\timeout.ctl) ret *donef write(Updating list box on user's screen ... ) setequal(c=07~listbox~-1~) jump (wipc) setequal(c=0F~listbox~Find A User~1~1~2~) jump (wipc) setequal(c=0F~RecCount~11~1~0~1~) jump (wipc) setequal(c=0F~Exit~Exit~1~1~3~) jump (wipc) setequal(c=0F~Scrl_UP~~1~1~4~) jump (wipc) setequal(c=0F~Scrl_Dn~~1~1~5~) jump (wipc) setequal(c=0F~Page_Up~~1~1~6~) jump (wipc) setequal(c=0F~Page_Dn~~1~1~7~) jump (wipc) setequal(c=0A~) jump (wipc) writeln(Done!) goto(getresp0) *okbox0 Jump (wipc) comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) if (%resp%)=() then goto (okbox) ret *notext writeln(No text was specified. Enter some text to search for and try again...) setequal(c=13~No text was specified. Please enter some text to search for and try again or click "quit" to exit.~No Text Specified~1~) jump (okbox0) goto (getresp0) *upgraphics setequal(/graphics=%nv%graphics%) if (%graphics%)<>(WIP) then loadsub(control\exitwip.ctl) ret *ret0 jump (upgraphics) return FULLEDITCTLWsetwrap() *fullmode seek(extedit.bat) iftrue(goto (extern)) CmpVal(19,%MAXLINE%) IfTrue (goto (page2)) setequal(p=%MAXLINE%) cmpval(19,%var%p) iftrue (setequal(p=19)) setline(%var%p) *bpage1 ClearScr say(&7&Entering mail in the %AREANAME% area. Press (&11&CTRL-Z&7&) to exit.) say($7$ |) Say(&0&To: &2&%nv%addressee% &0&From: &2&%NAME% &0&Regarding: &2&%nv%subject%$0$) say( &3&(--------/---------/---------/---------/---------/---------/---------/----)&15&) NumbLines(1,19) AnsiGoto(1,4) ShowTxtL(15,7,1,20) addvar(%var%p+3=p) ansigoto(1,%var%p) GetText(15,7,1,19) if (%nv%fromssc%)=(1) then goto (fromssc1) *resume1 if (%ARESP%)=(DOWNEXIT) then goto (bpage02) If (%ARESP%)=(FULLEXIT) Then goto (quit) *page2 CmpVal(33,%MAXLINE%) IfTrue (goto (page3)) setequal(p=%MAXLINE%) cmpval(34,%var%p) iftrue (setequal(p=34)) setline(%var%p) *bpage2 ClearScr say(&7&Entering mail in the %AREANAME% area. Press (&11&CTRL-Z&7&) to exit.) say($7$ |) Say(&0&To: &2&%nv%addressee% &0&From: &2&%NAME% &0&Regarding: &2&%nv%subject%$0$) say( &3&(--------/---------/---------/---------/---------/---------/---------/----)&15&) NumbLines(15,33) AnsiGoto(1,4) ShowTxtL(15,7,15,34) addvar(%var%p+-11=p) ansigoto(1,%var%p) GetText(15,7,15,33) if (%nv%fromssc%)=(1) then goto (fromssc2) *resume2 if (%ARESP%)=(UPEXIT) then goto (bpage01) if (%ARESP%)=(DOWNEXIT) then goto (bpage33) If (%ARESP%)=(FULLEXIT) Then goto (quit) *page3 cmpval(47,%Maxline%) iftrue (goto (page4)) setequal(p=%MAXLINE%) cmpval(48,%var%p) iftrue (setequal(p=48)) setline(%var%p) *bpage3 ClearScr say(&7&Entering mail in the %AREANAME% area. Press (&11&CTRL-Z&7&) to exit.) say($7$ |) Say(&0&To: &2&%nv%addressee% &0&From: &2&%NAME% &0&Regarding: &2&%nv%subject%$0$) say( &3&(--------/---------/---------/---------/---------/---------/---------/----)&15&) NumbLines(30,48) AnsiGoto(1,4) ShowTxtL(15,7,30,49) addvar(%var%p+-26=p) ansigoto(1,%var%p) GetText(15,7,30,48) if (%nv%fromssc%)=(1) then goto (fromssc3) *resume3 if (%ARESP%)=(UPEXIT) then goto (bpage22) if (%ARESP%)=(DOWNEXIT) then goto (bpage44) if (%ARESP%)=(FULLEXIT) then goto (quit) *page4 setequal(p=%MAXLINE%) cmpval(59,%var%p) iftrue (setequal(p=59)) setline(%var%p) *bpage4 clearscr say(&7&Entering mail in the %AREANAME% area. Press (&11&CTRL-Z&7&) to exit.) say($7$ |) Say(&0&To: &2&%nv%addressee% &0&From: &2&%NAME% &0&Regarding: &2&%nv%subject%$0$) say( &3&(--------/---------/---------/---------/---------/---------/---------/----)&15&) NumbLines(48,59) AnsiGoto(1,4) ShowTxtL(15,7,48,60) addvar(%var%p+-44=p) ansigoto(1,%var%p) GetText(15,7,48,59) if (%nv%fromssc%)=(4) then goto (fromssc4) *resume4 if (%ARESP%)=(UPEXIT) then goto (bpage43) *quit AnsiGoto(1,22) linefeed(1) setwrap() Return *extern inittxt exec(extedit.bat %node%) seek(msgtmp) ifnottrue(return) lines(msgtmp) import (msgtmp,,1,%aresp%) ;setequal(a=%aresp%) ;inc(a) ;setmax(%var%a) return *fromssc4 setnv(fromssc=) say( |) gettext(15,7,%maxline%,60) if (%nv%fromssc%)=(1) then goto (fromssc4) goto(resume4) *fromssc3 setnv(fromssc=) say( |) gettext(15,7,%maxline%,49) if (%nv%fromssc%)=(1) then goto (fromssc3) goto(resume3) *fromssc2 setnv(fromssc=) say( |) gettext(15,7,%maxline%,33) if (%nv%fromssc%)=(1) then goto (fromssc2) goto(resume2) *fromssc1 setnv(fromssc=) say( |) gettext(15,7,%maxline%,19) if (%nv%fromssc%)=(1) then goto (fromssc1) goto(resume1) *bpage02 setwrap () addvar(%fullexitline%+1=p) setline(%var%p) goto (bpage2) *bpage01 ;addvar(%var%p+-1=p) setwrap () addvar(%fullexitline%+-1=p) setline(%var%p) goto (bpage1) *bpage22 setwrap () addvar(%fullexitline%+-1=p) setline(%var%p) goto (bpage2) *bpage43 setwrap () addvar(%fullexitline%+-1=p) setline(%var%p) goto (bpage3) *bpage33 setwrap () addvar(%fullexitline%+1=p) setline(%var%p) goto (bpage3) *bpage44 setwrap () addvar(%fullexitline%+1=p) setline(%var%p) goto (bpage4) NEWBULLCTLêif (%nv%wipmode%)=(1) then goto (wip) say(&15&&CR&Please Wait!... &14&Searching for bulletins updated since your last logon...) newbulletins(display\bull) if (%ARESP%)=(NONE) then goto (nobul) view (updated.%NODE%) enter return *nobul say(&10&None of the bulletins have been updated since your last call.) enter return *wip if (%nv%wipe%)=() then goto (nowe) setequal(c=01~) jump (wipc) comlineinput(10,l) flushout *nowe newbulletins(display\bull) if (%aresp%)=(NONE) then goto (wipnone) fcopy(updated.%node%,display\updated.%node%) setnv(wipPath=%pbtemp%) kill(%nv%wipPath%bulltmpl.wip) loadmem(control\ewipscr.ctl,setnv(wipf=bulltmpl)) *wipnone flushout writeln ( None of the bulletins have been updated since your last call.) writeln() setequal(c=13~None of the bulletins have been updated since your last call.~No Bulletin Updates~1~) jump (okbox) return *okbox Jump (wipc) *try4 comlineinput(180,l) if (%resp%)=() then goto (try4) ret *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(45) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) RET *NOC0 log(<<,Carrier lost.) quitbbs QUITCHATCTL╫cursoroff if (%nv%logchat%)<>() then jump (closeChatLog) endif log(--,Sysop to User Chat Terminated) ansigoto(1,23) display(display\endchat) flushout if (%nv%wipe%)=() then goto (dr0) setnv(wipe=) setnv(wipmode=1) setequal(/resp=) *dr0 setnv(norefresh=) if (%graphics%)=(WIP) then goto (wip0) togsplit if (%nv%restscr%)=(1) then clearscr setequal(c=1) do inc(c) if (%var%c)=>(%nv%maxrl%) then goto (dn0) setequal(d=nv%scrbuf%var%c%) prc(%%VAR%D) setequal(d=%aresp%) say(%var%d) loop *dn0 setequal(d=nv%scrbuf%var%c%) prc(%%var%d) setequal(d=%aresp%) say(%var%d*) kill(%pbtemp%ssc.%node%) if (%GRAPHICS%)<>(ASCII) THEN ansigoto(%NV%SVX%,%NV%SVY%) ENDIF setnv(svx=) setnv(svy=) endif *wip0 setnv(curactive=) setnv(logchat=) setnv(syscb=0) setnv(usrcb=0) setnv(SpLine=) setnv(sysx=) setnv(sysy=) setnv(usrx=) setnv(usry=) setnv(sysline=) setnv(usrline=) setnv(curx=) setnv(cury=) loadsub(control\macros\restvars.ctl) if (%nv%klc%)=(32165) then setnv(fromssc=1) if (%nv%wipmode%)=(1) then return setequal(/aresp=) if (%nv%restscr%)=(0) then return if (%nv%lacrc%)<>(%nv%klc%) then return say(&%nv%fcol%&$%nv%bcol%$*) len(%nv%er%) if (%nv%lfillin%)<>(-1) then back(%aresp%) setwrap(%nv%er%) if (%nv%lfillin%)=(-1) then setfill(%nv%er%) if (%nv%klc%)=(32165) then setwrap() setnv(lfillin=) setnv(fcol=) setnv(bcol=) setnv(er=) setnv(klc=) setequal(/aresp=) if (%nv%lacrc%)=(-11691) then goto (mchback) if (%nv%lacrc%)=(31220) then say ( |) if (%nv%lacrc%)=(-19191) then goto (dispback) if (%nv%lacrc%)=(-4563) then goto (dispback) if (%nv%lacrc%)=(-26803) then goto (pictback) if (%nv%lacrc%)=(-19593) then setwrap() if (%nv%lacrc%)=(-3875) then setwrap() if (%nv%lacrc%)=(9648) then setwrap() if (%nv%lacrc%)=(-23046) then goto (flback) if (%nv%lacrc%)=(-30754) then goto (flback) if (%nv%lacrc%)=(22345) then goto (flback) if (%nv%lacrc%)=(19910) then goto (flback) setnv(lastpbans=) setnv(params=) setnv(lread=) if (%nv%lacrc%)=(20767) then goto (gpback) setnv(lacrc=) setequal(/resp=) return(%nv%lastask%(*)) *flback spause(/:screenlen/) setwrap() setnv(arback=) setnv(fromssc=1) return *pictback setnv(lread=) setnv(lastpbans=) setnv(lacrc=) return(%nv%lastask%(%nv%params%)) *mchback setnv(lread=) setnv(lacrc=) return(%nv%lastask%(%NOENTERMSG%%nv%params%)) *dispback setnv(lacrc=) setequal(/sklines=%nv%lread%) setnv(a=%var%a) addvar(/:screenlen/+-2=a) spause(%var%a) setequal(a=%nv%a%) setnv(a=) say ( |) setnv(lread=) setequal(/lastpbans=%nv%lastpbans%) setnv(lastpbans=) setwrap() return(%nv%lastask%(%noreset%%nv%params%)) *gpback setnv(lacrc=) return(%nv%lastask%(.)) *closeChatLog jump (logSysToDisk) jump (logUsrToDisk) appendto(%nv%logchat%,[Ending chat log at %time% on %date%]) setnv(logchat=) ret *logSysToDisk appendto(%NV%logchat%,%NV%sysline%) ret *logUsrToDisk appendto(%NV%logchat%,%NV%usrline%) ret QUITSSCCTLτcursoroff if (%nv%logchat%)<>() then jump (closeChatLog) endif log(--,Sysop to User Chat Terminated) ansigoto(1,23) display(display\endchat) togsplit flushout if (%nv%wipe%)=() then goto (dr0) setnv(wipe=) setnv(wipmode=1) setequal(/resp=) *dr0 setnv(norefresh=) if (%nv%wipmode%)=(1) then goto (wip0) if (%graphics%)=(WIP) then goto (wip0) if (%nv%restscr%)=(1) then clearscr setequal(c=1) do inc(c) if (%var%c)=>(%nv%maxrl%) then goto (dn0) setequal(d=nv%scrbuf%var%c%) prc(%%VAR%D) setequal(d=%aresp%) say(%var%d) loop *dn0 setequal(d=nv%scrbuf%var%c%) prc(%%var%d) setequal(d=%aresp%) say(%var%d*) kill(%pbtemp%ssc.%node%) if (%GRAPHICS%)<>(ASCII) THEN ansigoto(%NV%SVX%,%NV%SVY%) ENDIF setnv(svx=) setnv(svy=) endif *wip0 setnv(curactive=) setnv(logchat=) setnv(syscb=0) setnv(usrcb=0) setnv(SpLine=) setnv(sysx=) setnv(sysy=) setnv(usrx=) setnv(usry=) setnv(sysline=) setnv(usrline=) setnv(curx=) setnv(cury=) loadsub(control\macros\restvars.ctl) if (%nv%klc%)=(32165) then setnv(fromssc=1) setequal(/aresp=) if (%nv%restscr%)=(0) then return if (%nv%lacrc%)<>(%nv%klc%) then return say(&%nv%fcol%&$%nv%bcol%$*) len(%nv%er%) if (%nv%lfillin%)<>(-1) then back(%aresp%) setwrap(%nv%er%) if (%nv%lfillin%)=(-1) then setfill(%nv%er%) if (%nv%klc%)=(32165) then setwrap() setnv(lfillin=) setnv(fcol=) setnv(bcol=) setnv(er=) setnv(klc=) setequal(/aresp=) if (%nv%lacrc%)=(-11691) then goto (mchback) if (%nv%lacrc%)=(31220) then say ( |) if (%nv%lacrc%)=(-19191) then goto (dispback) if (%nv%lacrc%)=(-4563) then goto (dispback) if (%nv%lacrc%)=(-26803) then goto (pictback) if (%nv%lacrc%)=(-19593) then setwrap() if (%nv%lacrc%)=(-3875) then setwrap() if (%nv%lacrc%)=(9648) then setwrap() if (%nv%lacrc%)=(-23046) then goto (flback) if (%nv%lacrc%)=(-30754) then goto (flback) if (%nv%lacrc%)=(22345) then goto (flback) if (%nv%lacrc%)=(19910) then goto (flback) setnv(lastpbans=) setnv(params=) setnv(lread=) if (%nv%lacrc%)=(20767) then goto (gpback) setnv(lacrc=) setequal(/resp=) return(%nv%lastask%(*)) *flback spause(/:screenlen/) setwrap() setnv(arback=) setnv(fromssc=1) return *pictback setnv(lread=) setnv(lastpbans=) setnv(lacrc=) return(%nv%lastask%(%nv%params%)) *mchback setnv(lread=) setnv(lacrc=) return(%nv%lastask%(%NOENTERMSG%%nv%params%)) *dispback setnv(lacrc=) setequal(/sklines=%nv%lread%) setnv(a=%var%a) addvar(/:screenlen/+-2=a) spause(%var%a) setequal(a=%nv%a%) setnv(a=) say ( |) setnv(lread=) setequal(/lastpbans=%nv%lastpbans%) setnv(lastpbans=) setwrap() return(%nv%lastask%(%noreset%%nv%params%)) *gpback setnv(lacrc=) return(%nv%lastask%(.)) *closeChatLog jump (logSysToDisk) jump (logUsrToDisk) appendto(%nv%logchat%,[Ending chat log at %time% on %date%]) setnv(logchat=) ret *logSysToDisk appendto(%NV%logchat%,SYSOP: %NV%sysline%) ret *logUsrToDisk appendto(%NV%logchat%,USER: %NV%usrline%) ret LINECHATCTLD setnv(restscr=1) if (%restac%)=(FALSE) then setnv(restscr=0) *stChat setnv(wipe=) loadsub(control\exitwip.ctl) setnv(fromssc=) if (%LACRC%)=(31220) then setequal(/resp=) if (%LACRC%)=(15972) then setequal(/resp=) setnv(fcol=%FCOL%) setnv(bcol=%BCOL%) setnv(lastask=%lastask%) setnv(lacrc=%LACRC%) setnv(klc=%keyloadcrc%) setnv(lfillin=%lfillin%) setnv(lastpbans=%lastpbans%) setnv(lread=%lread%) setnv(params=%params%) setnv(er=%RESP%) loadsub(control\macros\savevars.ctl) if (%nv%restscr%)=(1) then SETNV(SVX=%X%) SETNV(SVY=%Y%) captscr(1,23,%PBTEMP%ssc.%NODE%) inpopen(%PBTEMP%ssc.%NODE%) setequal(c=0) setnv(maxrl=0) do fEndIf(dn0) inc(c) inpread setnv(scrbuf%VAR%C=%ARESP%) len(%ARESP%) if (%ARESP%)>(0) then setnv(maxrl=%VAR%C) loop *dn0 inpclose endif log(--,Sysop to User Chat Initiated) requested() setnv(curactive=s) setnv(logchat=) setnv(syscb=0) setnv(usrcb=0) togsplit setequal(a=0) ;inpline(%infansi%,1) ;setnv(SpLine=%ARESP%) ;clearscr ;ansigoto(1,12) ;ansisay(%NV%spline%) setequal(/resp=) ;ansigoto(1,1) say() display(display\chatinit) setnv(sysx=%X%) setnv(sysy=%Y%) setnv(usrx=1) setnv(usry=13) say(&%sysopcolor%&*) setnv(linetxt=) setnv(linetxt=) setequal(b=[Chat Mode Initiated: [ESC] Exit [F7] Log Chat]) setlen(b=80) localwrite(1,25,0,7,%VAR%B) jump(setcur) *WaitForKey DO localkey(20) ifnottrue(goto(no)) IF (%NV%CURACTIVE%)<>(s) THEN JUMP(syslSetup) ascii2 setequal(u=%RESP%) setequal(/resp=%ARESP%) bigif(27:quitchat,13:syscr,8:backsp,127:backsp,-65:chatlog) if (%ARESP%)=(-32) then jump (dossetup) if (%ARESP%)<(-119) then if (%ARESP%)>(-130) then goto (chatscrs) setequal(/resp=%VAR%U) syskeycheck if (%ARESP%)=(Yes) then goto (sysk) say(%RESP%*) setnv(linetxt=%NV%linetxt%%RESP%) if (%NV%sysx%)>(77) then jump (syswrap) *passSysSay setnv(curx=%X%) setnv(cury=%Y%) cursoron setnv(sysx=%X%) *no if (%BAUD%)=(LOCAL) then LOOP ccarrier if (%ARESP%)=(0) then goto (QuitChat) comkey ifnottrue(LOOP) IF (%NV%CURACTIVE%)=(s) THEN JUMP(usrlSetup) ascii2 if (%ARESP%)=(13) then goto (usrcr) if (%ARESP%)=(8) then goto (usrBack) if (%ARESP%)=(127) then goto (usrback) if (%ARESP%)=(27) then LOOP say(%RESP%*) setnv(linetxt=%NV%linetxt%%RESP%) if (%NV%UsrX%)>(77) then jump (usrwrap) *passUsrSay setnv(curx=%X%) setnv(cury=%Y%) cursoron setnv(UsrX=%X%) LOOP *QuitChat loadmem(control\macros\quitSSC.ctl) *setcur setnv(curx=%X%) setnv(cury=%Y%) cursoron ret *setpos ret if (%VAR%A)=(1) then setequal(a=0) if (%NV%curactive%)=(s) then setnv(curx=%NV%sysx%) setnv(cury=%NV%sysy%) ansigoto(%NV%curx%,%NV%cury%) ret endif setnv(curx=%NV%usrx%) setnv(cury=%NV%usry%) ansigoto(%NV%curx%,%NV%cury%) endif ret *togcur if (%NV%curactive%)=(s) then setnv(curactive=u) say(&%usercolor%&*) ret endif setnv(curactive=s) say(&%sysopcolor%&*) ret *syslSetup jump(togcur) if (%NV%sysx%)<>(%NV%curx%) then setequal(a=1) if (%NV%sysy%)<>(%NV%cury%) then setequal(a=1) jump(setpos) ret *usrlSetup jump(togcur) if (%NV%usrx%)<>(%NV%curx%) then setequal(a=1) if (%NV%usry%)<>(%NV%cury%) then setequal(a=1) jump(setpos) ret *newSysLine if (%NV%logchat%)<>() then jump(LogSysToDisk) linefeed(1) ret if (%Y%)>(11) then setnv(Syscb=1) if (%Y%)>(11) then ansigoto(1,1) setnv(sysy=%Y%) if (%NV%syscb%)=(0) then ret if (%Y%)=(1) then eline(80) if (%Y%)>(10) then ret comprint(B) addvar(%Y%+1=u) locgoto(1,%VAR%U) eline(80) if (%Y%)>(9) then goto (j1s) comprint(B) addvar(%Y%+1=u) locgoto(1,%VAR%U) eline(80) addvar(%Y%+-1=u) locgoto(1,%VAR%U) comprint(A) *j1s addvar(%Y%+-1=u) locgoto(1,%VAR%U) comprint(A) setnv(sysy=%Y%) ret *newUsrLine if (%NV%logchat%)<>() then jump (logUsrtodisk) linefeed(1) ret if (%Y%)>(22) then setnv(Usrcb=1) setequal(f=1) ansigoto(1,13) endif if (%NV%usrCb%)=(0) then linefeed(1) setnv(UsrY=%Y%) if (%NV%Usrcb%)=(0) then ret if (%VAR%F)=(0) then linefeed(1) setequal(f=0) if (%Y%)=(13) then eline(80) setnv(usry=%Y%) if (%Y%)>(22) then ret comprint(B) addvar(%Y%+1=u) locgoto(1,%VAR%U) eline(80) if (%Y%)>(21) then goto (j1) comprint(B) addvar(%Y%+1=u) locgoto(1,%VAR%U) eline(80) addvar(%Y%+-1=u) locgoto(1,%VAR%U) comprint(A) *j1 addvar(%Y%+-1=u) locgoto(1,%VAR%U) comprint(A) setnv(usry=%Y%) ret *logSysToDisk appendto(%NV%logchat%,%NV%linetxt%) ret *logUsrToDisk appendto(%NV%logchat%,%NV%linetxt%) ret *closeChatLog jump (logSysToDisk) jump (logUsrToDisk) appendto(%NV%logchat%,[Ending chat log at %time% on %date%]) setnv(logchat=) ret *backsp len(%NV%linetxt%) addvar(%ARESP%+-1=i) setequal(o=%NV%linetxt%) get(&o,1,%VAR%I) setnv(linetxt=%ARESP%) backsp(1) cursoron goto(passsyssay) *usrback len(%NV%linetxt%) addvar(%ARESP%+-1=i) setequal(o=%NV%linetxt%) get(&o,1,%VAR%I) setnv(linetxt=%ARESP%) backsp(1) cursoron goto(passUsrSay) *chatscrs multvar(%ARESP%*-1=B) addvar(%VAR%B+-119=B) if (%VAR%B)=(10) then setequal(b=0) display(chatscrs\%VAR%B) goto(waitforkey) *syscr jump(newSysLine) setnv(linetxt=) goto(passSysSay) *chatlog if (%NV%logchat%)<>() then setequal(b=[Chat log closed]) setlen(b=80) localwrite(1,12,7,1,%VAR%B) jump (closeChatLog) goto(waitforkey) endif setequal(b=[Now logging to LOGS\CHAT.%NODE%]) setlen(b=80) localwrite(1,12,7,1,%VAR%B) setnv(logchat=logs\chat.%NODE%) appendto(%NV%logchat%,-----------------------------------------------------------) appendto(%NV%logchat%,[Logging chat session between %sysop% and %name% on %date% at %time%]) goto(waitforkey) *syswrap setequal(L=%NV%linetxt%) len(%NV%linetxt%) setequal(z=%ARESP%) rtrim(L) len(%VAR%L) if (%ARESP%)<>(%VAR%Z) then goto (syscr) findr(&l, ) setequal(o=%ARESP%) addvar(%VAR%Z+-%var%o=p) back(%var%p) comprint() setequal(y= ) get(&y,1,%var%p) write(%ARESP%) jump(newSysLine) inc(o) get(&l,%var%o,50) say(%ARESP%*) setnv(linetxt=%ARESP%) ret *usrwrap setequal(l=%NV%linetxt%) len(%NV%linetxt%) setequal(z=%ARESP%) rtrim(l) len(%var%l) if (%ARESP%)<>(%var%z) then goto (usrcr) findr(&l, ) setequal(o=%ARESP%) addvar(%var%z+-%var%o=p) back(%var%p) comprint() setequal(y= ) get(&y,1,%var%p) write(%ARESP%) jump(newUsrLine) inc(o) get(&l,%var%o,50) say(%ARESP%*) setnv(linetxt=%ARESP%) ret *UsrCr jump(newUsrLine) setnv(linetxt=) goto(passUsrSay) *dossetup ;setnv(curx=0) ;ansigoto(1,12) ret *SysK setnv(curactive=u) jump(syslSetup) LOOP *noRest setnv(restscr=0) goto(stchat) SSCCTL╠setnv(ArBack=%aresp%) if (%graphics%)=(ASCII) then loadmem(control\macros\linechat.ctl) setnv(restscr=1) if (%restac%)=(FALSE) then setnv(restscr=0) *stChat setnv(wipe=) loadsub(control\exitwip.ctl) setnv(fromssc=) if (%LACRC%)=(31220) then setequal(/resp=) if (%LACRC%)=(15972) then setequal(/resp=) setnv(fcol=%FCOL%) setnv(bcol=%BCOL%) setnv(lastask=%lastask%) setnv(lacrc=%LACRC%) setnv(klc=%keyloadcrc%) setnv(lfillin=%lfillin%) setnv(lastpbans=%lastpbans%) setnv(lread=%lread%) setnv(params=%params%) setnv(er=%RESP%) loadsub(control\macros\savevars.ctl) if (%nv%restscr%)=(1) then setnv(svX=%X%) setnv(svY=%Y%) captscr(1,23,%PBTEMP%ssc.%NODE%) inpopen(%PBTEMP%ssc.%NODE%) setequal(c=0) setnv(maxrl=0) do fEndIf(dn0) inc(c) inpread setnv(scrbuf%VAR%C=%ARESP%) len(%ARESP%) if (%ARESP%)>(0) then setnv(maxrl=%VAR%C) loop *dn0 inpclose endif log(--,Sysop to User Chat Initiated) requested() setnv(curactive=s) setnv(logchat=) setnv(syscb=0) setnv(usrcb=0) togsplit setequal(a=0) inpline(%infansi%,1) setnv(SpLine=%ARESP%) clearscr ansigoto(1,12) ansisay(%NV%spline%) setequal(/resp=) ansigoto(1,1) display(display\chatinit) setnv(sysx=%X%) setnv(sysy=%Y%) setnv(usrx=1) setnv(usry=13) say(&%sysopcolor%&*) setnv(sysline=) setnv(usrline=) setequal(b=[Chat Mode Initiated: [ESC] Exit [F7] Log Chat]) setlen(b=80) localwrite(1,25,0,7,%VAR%B) jump(setcur) *WaitForKey DO localkey(20) ifnottrue(goto(no)) IF (%NV%CURACTIVE%)<>(s) THEN JUMP(syslSetup) ascii2 setequal(u=%RESP%) setequal(/resp=%ARESP%) bigif(27:quitchat,13:syscr,8:backsp,127:backsp,-65:chatlog) if (%ARESP%)=(-32) then jump (dossetup) if (%ARESP%)<(-119) then if (%ARESP%)>(-130) then goto (chatscrs) setequal(/resp=%VAR%U) syskeycheck if (%ARESP%)=(Yes) then goto (sysk) say(%RESP%*) setnv(sysline=%NV%sysline%%RESP%) if (%NV%sysx%)>(77) then jump (syswrap) *passSysSay setnv(curx=%X%) setnv(cury=%Y%) cursoron setnv(sysx=%X%) *no if (%BAUD%)=(LOCAL) then LOOP ccarrier if (%ARESP%)=(0) then goto (QuitChat) comkey ifnottrue(LOOP) IF (%NV%CURACTIVE%)=(s) THEN JUMP(usrlSetup) ascii2 if (%ARESP%)=(13) then goto (usrcr) if (%ARESP%)=(8) then goto (usrBack) if (%ARESP%)=(127) then goto (usrback) if (%ARESP%)=(27) then LOOP say(%RESP%*) setnv(UsrLine=%NV%UsrLine%%RESP%) if (%NV%UsrX%)>(77) then jump (usrwrap) *passUsrSay setnv(curx=%X%) setnv(cury=%Y%) cursoron setnv(UsrX=%X%) LOOP *QuitChat loadmem(control\macros\quitSSC.ctl) *setcur setnv(curx=%X%) setnv(cury=%Y%) cursoron ret *setpos if (%VAR%A)=(1) then setequal(a=0) if (%NV%curactive%)=(s) then setnv(curx=%NV%sysx%) setnv(cury=%NV%sysy%) ansigoto(%NV%curx%,%NV%cury%) ret endif setnv(curx=%NV%usrx%) setnv(cury=%NV%usry%) ansigoto(%NV%curx%,%NV%cury%) endif ret *togcur if (%NV%curactive%)=(s) then setnv(curactive=u) say(&%usercolor%&*) ret endif setnv(curactive=s) say(&%sysopcolor%&*) ret *syslSetup jump(togcur) if (%NV%sysx%)<>(%NV%curx%) then setequal(a=1) if (%NV%sysy%)<>(%NV%cury%) then setequal(a=1) jump(setpos) ret *usrlSetup jump(togcur) if (%NV%usrx%)<>(%NV%curx%) then setequal(a=1) if (%NV%usry%)<>(%NV%cury%) then setequal(a=1) jump(setpos) ret *newSysLine if (%NV%logchat%)<>() then jump(LogSysToDisk) linefeed(1) if (%Y%)>(11) then setnv(Syscb=1) if (%Y%)>(11) then ansigoto(1,1) setnv(sysy=%Y%) if (%NV%syscb%)=(0) then ret if (%Y%)=(1) then eline(80) if (%Y%)>(10) then ret comprint(B) addvar(%Y%+1=u) locgoto(1,%VAR%U) eline(80) if (%Y%)>(9) then goto (j1s) comprint(B) addvar(%Y%+1=u) locgoto(1,%VAR%U) eline(80) addvar(%Y%+-1=u) locgoto(1,%VAR%U) comprint(A) *j1s addvar(%Y%+-1=u) locgoto(1,%VAR%U) comprint(A) setnv(sysy=%Y%) ret *newUsrLine if (%NV%logchat%)<>() then jump (logUsrtodisk) ;linefeed(1) if (%Y%)>(22) then setnv(Usrcb=1) setequal(f=1) ansigoto(1,13) endif if (%NV%usrCb%)=(0) then linefeed(1) setnv(UsrY=%Y%) if (%NV%Usrcb%)=(0) then ret if (%VAR%F)=(0) then linefeed(1) setequal(f=0) if (%Y%)=(13) then eline(80) setnv(usry=%Y%) if (%Y%)>(22) then ret comprint(B) addvar(%Y%+1=u) locgoto(1,%VAR%U) eline(80) if (%Y%)>(21) then goto (j1) comprint(B) addvar(%Y%+1=u) locgoto(1,%VAR%U) eline(80) addvar(%Y%+-1=u) locgoto(1,%VAR%U) comprint(A) *j1 addvar(%Y%+-1=u) locgoto(1,%VAR%U) comprint(A) setnv(usry=%Y%) ret *logSysToDisk appendto(%NV%logchat%,SYSOP: %NV%sysline%) ret *logUsrToDisk appendto(%NV%logchat%,USER: %NV%usrline%) ret *closeChatLog jump (logSysToDisk) jump (logUsrToDisk) appendto(%NV%logchat%,[Ending chat log at %time% on %date%]) setnv(logchat=) ret *backsp len(%NV%sysline%) addvar(%ARESP%+-1=i) setequal(o=%NV%sysline%) get(&o,1,%VAR%I) setnv(sysline=%ARESP%) backsp(1) cursoron goto(passsyssay) *usrback len(%NV%UsrLine%) addvar(%ARESP%+-1=i) setequal(o=%NV%UsrLine%) get(&o,1,%VAR%I) setnv(UsrLine=%ARESP%) backsp(1) cursoron goto(passUsrSay) *chatscrs multvar(%ARESP%*-1=B) addvar(%VAR%B+-119=B) if (%VAR%B)=(10) then setequal(b=0) display(chatscrs\%VAR%B) goto(waitforkey) *syscr jump(newSysLine) setnv(sysline=) goto(passSysSay) *chatlog loadsub(control\macros\chatlog.ctl) goto(waitforkey) *syswrap setequal(L=%NV%sysline%) len(%NV%sysline%) setequal(z=%ARESP%) rtrim(L) len(%VAR%L) if (%ARESP%)<>(%VAR%Z) then goto (syscr) findr(&l, ) setequal(o=%ARESP%) addvar(%VAR%Z+-%var%o=p) back(%var%p) comprint() setequal(y= ) get(&y,1,%var%p) write(%ARESP%) jump(newSysLine) inc(o) get(&l,%var%o,50) say(%ARESP%*) setnv(sysline=%ARESP%) ret *usrwrap setequal(l=%NV%UsrLine%) len(%NV%UsrLine%) setequal(z=%ARESP%) rtrim(l) len(%var%l) if (%ARESP%)<>(%var%z) then goto (usrcr) findr(&l, ) setequal(o=%ARESP%) addvar(%var%z+-%var%o=p) back(%var%p) comprint() setequal(y= ) get(&y,1,%var%p) write(%ARESP%) jump(newUsrLine) inc(o) get(&l,%var%o,50) say(%ARESP%*) setnv(UsrLine=%ARESP%) ret *UsrCr jump(newUsrLine) setnv(usrline=) goto(passUsrSay) *dossetup setnv(curx=0) ansigoto(1,12) ret *SysK setnv(curactive=u) jump(syslSetup) LOOP *noRest setnv(restscr=0) goto(stchat) CHANGEUCTLb;IF(/:SEC/)=(100) then goto (sysv) delimit( ,;) ListFile(areas\fau/:LASTMSG/) ;upload areas are AREAS\FAU%VAR%B ;---PowerStak Block 1 len(%nv%queue%) notif (%aresp%) = (0) then setequal(/resp=%nv%queue%) goto(stk) ;If something in the stack then... endif ;---PowerStak Block 1 End--- NotIf(%FAREA%)=(AREAS\FAU/:LASTMSG/) then Display(display\nofareas) Enter endif display(%FAREA%) Say(&CR&&12&Please note that other conferences may have different upload areas.) *bkh MenuAsk(&CR&&3&Which upload area would you like?&12&: &15&*) ;---PowerStak Block 2 *stk setequal(a=%resp%) DEQUEUE(a) setequal(/nvqueue=%var%a) setequal(/resp=%aresp%) ;---PowerStak Block 2 End--- If (%RESP%)=() then Setequal(/resp=1) *sa number(%resp%) ifnottrue(return) CmpValo(%MAXFAREA%,%RESP%) IfTrue(goto (bds)) SelFarea(%RESP%) CmpVal(%sec%,%FILSEC%) IfTrue(goto (nofs)) SetEqual(/LASTUP=%RESP%) if (%CD%)=(Yes) then display(%CDPath%/:lastdown/\welc) if (%CD%)=(No) then Display(%FILPATH%welc) Say(&CR&&11&Area #%RESP%: &15&%FILNAME% &11&is now selected!&CR&) log(--,Changed to %FILNAME% upload area) ; Say(&15&Would you like to list this area? (&12&Y&15&/&12&N&15&)&14&*) ; Back(4) ; YesNoAsk() ; If (%RESP%)=(Yes) Then loadsub(control\macros\flist.ctl) Return *bds loadsub(control\macros\badsel.ctl) ;Clear Stack on Error! ;---PowerStak Block 3 setequal(/nvqueue=) ;---PowerStak Block 3 End Return *nofs display(display\NOFSEC) selfarea(/:lastdown/) return *sysv seek(%FAREA%.100) iftrue(view(%FAREA%.100)) ifnottrue(display(%FAREA%)) goto (bkh) DPKTCTL%loadsub(control\exitwip.ctl) Zap(%pbtemp%confhis.%node%) setequal(p=0) freespace(%CDRIVE%:) if (%ARESP%)<(%MINSPACE%) then loadmem (control\macros\nospace.ctl) setactivity(Downloading Mail) setnv(nonew=N) if (%qwknonew%)<>() then setnv(nonew=%qwknonew%) setequal(a=%nvnonew%) get(&a,1,1) setequal(a=%aresp%) upcase(a) setnv(nonew=%var%a) setnv(nobull=N) if (%qwknobull%)<>() then setnv(nobull=%qwknobull%) setequal(a=%nv%nobull%) get(&a,1,1) setequal(a=%aresp%) upcase(a) setnv(nobull=%var%a) setnv(ID=NUIQ) if (%qwkid%)<>() then setnv(ID=%qwkid%) setnv(LOCALDIR=C:\KING) if (%qwkLocalDir%)<>() then setnv(localdir=%qwklocaldir%) if (%nv%localdir%)=() then goto (nol) len(%nv%localdir%) get(%nv%localdir%,%aresp%,1) if (%aresp%)<>(\) then goto (nol) len(%nv%localdir%) addvar(%aresp%+-1=a) get(%nv%localdir%,1,%var%a) setnv(localdir=%aresp%) *nol mkdir(%PBTEMP%QWKWORK) KILL(%PBTEMP%QWKWORK\*.*) clearscr setnv(qwkattaches=%qwkattaches%) if (%nv%qwkattaches%)=() then goto (noqa) get(%nv%qwkattaches%,1,1) setequal(a=%aresp%) upcase(a) setnv(qwkattaches=%var%a) *noqa setnv(qwklim=%qwkconflimit%) if (%qwkconflimit%)=() then setnv(qwklim=200) zap(%PBTEMP%qwkconf) zap(%PBTEMP%QWKWORK\DOOR.ID,DOOR = Powerboard) appendto(%PBTEMP%qwkwork\door.id,VERSION = %VER%) appendto(%PBTEMP%qwkwork\door.id,SYSTEM = Powerboard BBS %ver%) appendto(%PBTEMP%qwkwork\door.id,CONTROLNAME = Powerboard) appendto(%PBTEMP%qwkwork\door.id,CONTROLTYPE = ADD) appendto(%PBTEMP%qwkwork\door.id,CONTROLTYPE = DROP) appendto(%PBTEMP%qwkwork\door.id,CONTROLTYPE = RESET) Say(&14&%date% %time% Building .QWK mail packet for %NAME%) ZAP(%PBTEMP%qwkwork\control.dat,%BBS%) appendto(%PBTEMP%qwkwork\control.dat,) appendto(%PBTEMP%qwkwork\control.dat,) appendto(%PBTEMP%qwkwork\control.dat,%SYSOP%, Sysop) appendto(%PBTEMP%qwkwork\control.dat,29999,%NV%ID%) Say(&14&) get(%date%,1,6) setequal(a=%aresp%19) get(%date%,7,2) setequal(a=%var%a%aresp%) appendto(%PBTEMP%qwkwork\control.dat,%var%a,%time%:00) setequal(a=%name%) upcase(a) appendto(%PBTEMP%qwkwork\control.dat,%var%a) appendto(%PBTEMP%qwkwork\control.dat,) appendto(%PBTEMP%qwkwork\control.dat,0) appendto(%PBTEMP%qwkwork\control.dat,0) appendto(%PBTEMP%qwkwork\control.dat,%maxarea%) setequal(w=0) do inc(w) appendto(%PBTEMP%qwkwork\control.dat,%var%w) msgname(%var%w) setequal(a=%aresp%) get(&a,1,60);10 appendto(%PBTEMP%qwkwork\control.dat,%aresp%) if (&W)<>(%maxarea%) then loop Say(&15&Scanning Conferences... &10&Press CTRL-K to Quit Scan) Say() fcopy(display\welcome.ans,%PBTEMP%qwkwork\welcome) if (%graphics%)=(ASCII) then fcopy(display\welcome.asc,%PBTEMP%qwkwork\welcome) fcopy(display\goodbye.ans,%PBTEMP%qwkwork\goodbye) if (%graphics%)=(ASCII) then fcopy(display\goodbye.asc,%PBTEMP%qwkwork\goodbye) Say(&11&Conference High Msg High Read Sending&CR&) setequal(a=Produced by Qmail...Copyright (c) 1987 by Sparkware. All Rights Reserved Above for Compatibility with Qmail) fwrite(%PBTEMP%qwkwork\messages.dat,1,128,a) setequal(x=129) setequal(w=0) do freespace(%CDRIVE%:) if (%ARESP%)<(%MINSPACE%) then loadmem (control\macros\nospace.ctl) inc(w) if (%var%w)>(%maxarea%) then goto (done0) selarea(%var%w) enufsec(%areasec%) ifnottrue(goto(nxarea)) if (%msgiscan%)=(Y) then goto (psc) getf ifnottrue(goto(nxarea)) *psc msghigh(0) appendto(%pbtemp%confhis.%node%,%aresp%) setequal(u=) setequal(a=%areaname%) setlen(a=41) Say(&7&%var%a*) himsg(%var%w) setequal(f=%ARESP%) setequal(g=%aresp%) setlen(g=11) Say(&12&%var%g*) msghigh(%var%w) setequal(/nvh=%aresp%) setequal(y=%ARESP%) setequal(g=%aresp%) lowmsg if (%var%y)<(%aresp%) then setequal(y=%aresp%) inc(Y) setlen(g=12) Say(%var%g&15&*) setequal(a=0) *st jump (twirl) GETMAIL(%VAR%Y,%var%w,1,T) IF (%MSGNUMBER%)=(0) THEN GOTO(LP) IF(%ARESP%)<>(Yes) THEN GOTO(LP) setequal(b=%NAME%) upcase(b) if (&B)=(%MSGFROM%) then goto (lp) if (/:FLAG03)=(Y) then if (%MSGTO%)<>(&B) then goto (LP) enufsec(%syssec%) iftrue(goto(ska)) if (%MSGPVT%)=(PRIVATE) then if (%MSGTO%)<>(&B) then goto (LP) *ska setequal(b=%msgbytes%) if (%MSGBYTES%)=(0) then goto (LP) inc(b) setequal(/nvb=%var%b) if (%MSGPVT%)=(NOT PRIVATE) then if (%MSGRCVD%)=(NOT RECEIVED) then setequal(z= ) if (%MSGPVT%)=(NOT PRIVATE) then if (%MSGRCVD%)=(RECEIVED) then setequal(z=-) if (%MSGPVT%)=(PRIVATE) then setequal(z=*) if (%MSGTO%)=(%SYSOPC%) then if (%MSGPVT%)=(PRIVATE) then if (%VAR%W)=(1) then if (%MSGRCVD%)=(NOT RECEIVEED) then setequal(z=~) if (%MSGTO%)=(%SYSOPC%) then if (%MSGPVT%)=(PRIVATE) then if (%VAR%W)=(1) then if (%MSGRCVD%)=(RECEIVEED) then setequal(z=`) setequal(b=%msgnumber%) setlen(b=7) setequal(c=%msgto%) setlen(c=25) setequal(d=%msgfrom%) setlen(d=25) setequal(e=%msgdesc%) setlen(e=25) setnv(attline=) if (%nv%qwkattaches%)=(Y) then if (%MSGATTACH%)=(Y) then if (%storedext%)=() then fcopy(%attpat%%attn0%.%attext%,%pbtemp%qwkwork\%msgattname%) if (%storedext%)<>() then fcopy(%attpat%%attn0%.%storedext%,%pbtemp%qwkwork\%msgattname%) setnv(attline=File Attached: %MSGATTNAME% () If(%STOREDEXT%)=() then size(%ATTPAT%%ATTN0%.%ATTEXT%) NotIf(%STOREDEXT%)=() then size(%ATTPAT%%ATTN0%.%STOREDEXT%) setnv(attline=%nv%attline% %aresp% bytes -- Time to download: ) TTime(%ARESP%) setnv(attline=%nv%attline% %aresp%)) appendto(%pbtemp%qwkwork\attaches,#%msgnumber% %msgto% %msgfrom% %msgdesc%) appendto(%pbtemp%qwkwork\attaches,%nv%attline%) endif endif setequal(g=%msgprev%) setlen(g=8) divvar(%nv%b%/128=h) inc(h) mod(%nv%b%,128) setequal(r=%aresp%) if (%var%r)=(0) then setequal(r=128) addvar(%var%r+-1=r) if (%aresp%)<>(0) then inc(h) setequal(i=%var%h) setlen(i=6) get(%msgsntd%,1,6) setequal(q=%aresp%) get(%msgsntd%,9,2) setequal(q=%var%q%aresp%) mki(%var%w) setequal(z=%var%z%var%b%var%q%msgsntt%%var%c%var%d%var%e %var%g%var%iß%aresp% ) fwrite(%PBTEMP%qwkwork\messages.dat,%var%x,128,z) addvar(%var%x+128=x) divvar(%var%x/128=v) mksmbf(%var%v) setequal(v=%aresp%) chr(%var%w) setequal(v=%var%v%aresp%) setequal(m=%NAME%) upcase(M) if (%MSGTO%)=(&M) then appendtoN(%PBTEMP%qwkwork\personal.ndx,%var%v) setequal(u=%var%u%var%v) fsetloc (%txhand%,%msgstart%) setequal(l=128) setequal(m=0) setequal(o=0) addvar(%var%h+-1=h) *again inc(o) if (&o)=>(&h) then setequal(l=%var%r) fget(%txhand%,%var%l,q) seekrep(q,141,227) if (&o)=(&h) then setequal(q=%var%qπ) fwrite(%PBTEMP%qwkwork\messages.dat,%var%x,128,q) if (%var%l)<(1) then goto (lp) addvar(%var%m+%var%l=m) addvar(%var%x+128=x) if (&m)<(%NV%B%) then goto (again) inc(a) if (%nv%qwklim%)>(0) then if (%var%a)=>(%nv%qwklim%) then goto (back) endif *LP INC(Y) cmpval(%var%f,%var%y) iftrue(goto(back)) goto (st) *back Say(%var%a*) if (%nv%qwklim%)>(0) then if (%var%a)=>(%nv%qwklim%) then say( [Over Limit]*) endif say() sethigh(%nv%h%) appendto(%PBTEMP%qwkconf,%var%w) if (&a)=(0) then goto (nxarea) len(%var%w) if (%aresp%)=(1) then setequal(w=00%var%w) if (%aresp%)=(2) then setequal(w=0%var%w) appendtoN(%PBTEMP%qwkwork\%var%w.NDX,%var%u) *nxarea ifkey() iftrue(goto(done0)) localkey(1) if(%ARESP%)=() then goto (done0) ;setactivity(Area %VAR%W; Max Area %MAXAREA%) if (%VAR%W)=(0%MAXAREA%) then goto(done0) if (&w)<>(%MAXAREA%) then loop *done0 selarea(/:lastmsg/) Setequal(a=&CR&&15&Would you like to download this packet?) loadsub(control\yesno.ctl) if (%RESP%)=(No) then goto (gb) Say() if (%nv%nonew%)=(N) then if (/:FLAG04/)<>(Y) then loadsub(control\macros\qwknew.ctl) endif if (%nv%nobull%)=(N) then loadsub(control\macros\qwkbull.ctl) Say(&CR&&12& Compressing .QWK Mail Packet, please wait... *) exec(pkzip %PBTEMP%qwkwork\%NV%ID%.QWK %PBTEMP%qwkwork\*.*) Say(&12&Done!&CR&) If (%LOCAL%)=(TRUE) then Say(&14&Local transfer, sending to %NV%LOCALDIR%!) fcopy(%PBTEMP%qwkwork\%NV%ID%.qwk,%NV%LOCALDIR%\%NV%ID%.qwk) Goto(succ) endif *selp display(display\qwkprot) ;Say(&3&(&11&Y&3&) Y-Modem) ;Say(&3&(&11&Z&3&) Z-Modem) MenuAsk(%MIN%1%&15&Protocol to use? (Q=Quit)&12&: &14&*) if (%RESP%)=(Q) then goto(gb) find(%RESP%,\) iftrue(goto(gb)) len(%RESP%) find(%resp%,**) iftrue(setequal(/resp=Z)) if (%ARESP%)<>(1) then goto (selp) setequal(a=%resp%) Say(&CR&&11&Now sending %NV%ID%.QWK. Please get ready to receive the file now.&CR&) fixfile(protocol\%resp%-qwk.BT,%PBTEMP%qwkd.BAT) exec(%PBTEMP%qwkd.BAT│) eline(79) if (%ARESP%)<>(0) then goto (gb) *succ Say(&CR&&15&Transfer successful.&CR&&CR&&11&Please wait, now updating message pointers... *) inpopen(%PBTEMP%qwkconf) *st00 fendif(over) inpread setequal(w=%aresp%) selarea(%aresp%) himsg(%var%w) sethigh(%aresp%) goto(st00) *over Say(&11&Done!&CR&) size(%PBTEMP%qwkwork\%nv%id%.qwk) kill(%pbtemp%qwkconf) log(--,Downloaded a %aresp% byte mail packet.) goto (dn0) *gb loadsub(control\macros\dpkt2.ctl) *dn0 KILL(%PBTEMP%QWKWORK\*.*) selarea(/:lastmsg/) if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return *twirl INC(P) if (%VAR%P)>(8) then setequal(P=1) if (%VAR%P)=(1) then say(-*) if (%VAR%P)=(2) then say(\*) if (%VAR%P)=(3) then say(|*) if (%VAR%P)=(4) then say(/*) if (%VAR%P)=(5) then say(-*) if (%VAR%P)=(6) then say(\*) if (%VAR%P)=(7) then say(|*) if (%VAR%P)=(8) then say(/*) back(1) ret SHOWMSGCTLZ!*AGMail getmail(%var%i,,%var%w) setequal(s=0) if (%MsgNumber%)=(0) then goto (next) setequal(z=10) ;notif (%ARESP%)=(Yes) then notif(%ARESP%)=(DELETED) then goto (nope) *banyway clearscr SetEqual(/nvkilled=NO) if(%ARESP%)=(DELETED) then SetEqual(/nvkilled=YES) setequal(x=0) setequal(s=0) nicedate(%MSGSNTD%) say(&11&Message &3&%MsgNumber%&11& of &3&%var%f&11& was sent on&3& %ARESP%&11& at &3&*) nicetime(%MSGSNTT%) nicesay(%ARESP%&14&&CR& Sent by: &3&%MSGFROM%&CR&&14& Addressed to: &3&%MSGTO% ) say(&14& Regarding: &3&%MSGDESC% ) nicesay(&14& Status: &3&%MSGPVT%, %MSGRCVD%, Read %MSGRDTIMES% times, %REPLIES%*) If(%NV%KILLED%)=(YES) then Say(&3&, &12&DELETED) NotIf(%NV%KILLED%)=(YES) then Say() spause(8) if (%MSGATTACH%)=(Y) then if (%MSGPVT%)=(PRIVATE) then setequal(s=10) if (%MSGATTACH%)=(Y) then jump (attroutine) if (&s)=(10) then spause(9) say(&8&────────────────────────────────────────────────────────────────────────&CR&&7&) showtxt say() *reading ;If (&s)=(10) then If (%SEC%)=(100) then Display(display\rdnga100) ;If (&s)=(10) then NotIf (%SEC%)=(100) then Display(display\rdnga) ;NotIf (&s)=(10) then If (%SEC%)=(100) then Display(display\rdng100) ;NotIf (&s)=(10) then NotIf (%SEC%)=(100) then Display(display\rdng) NotIF(%NV%KILLED%)=(YES) then If(%SEC%)=(100) then If(%MSGATTACH%)=(Y) then Display(display\inbx100a) IF(%NV%KILLED%)=(YES) then If(%SEC%)=(100) then If(%MSGATTACH%)=(Y) then Display(display\inb100ka) If(%NV%KILLED%)=(YES) then If(%SEC%)=(100) then NotIf(%MSGATTACH%)=(Y) then Display(display\inbx100k) NotIF(%NV%KILLED%)=(YES) then If(%SEC%)=(100) then NotIf(%MSGATTACH%)=(Y) then Display(display\inbox100) NotIF(%NV%KILLED%)=(YES) then NotIf(%SEC%)=(100) then If(%MSGATTACH%)=(Y) then Display(display\inboxa) IF(%NV%KILLED%)=(YES) then NotIf(%SEC%)=(100) then If(%MSGATTACH%)=(Y) then Display(display\inboxka) NotIF(%NV%KILLED%)=(YES) then NotIf(%SEC%)=(100) then NotIf(%MSGATTACH%)=(Y) then Display(display\inbox) IF(%NV%KILLED%)=(YES) then NotIf(%SEC%)=(100) then NotIf(%MSGATTACH%)=(Y) then Display(display\inboxk) ;say(&15&Options: &3&(&11&N&3&)ext, (&11&Q&3&)uit, (&11&K&3&)ill, (&11&S&3&)how Again, (&11&R&3&)eply, F(&11&o&3&)rward Message,) ;say( (&11&E&3&)dit, (&11&M&3&)ark, (&11&F&3&)orward or (&11&B&3&)ack Thread,*) ;if (&s)=(10) then say( (&11&D&3&)ownload Attach,*) ;say( (&11&H&3&)elp&CR&) jump(getHiLow) numbmenuask (%CRON%&15&Which option would you like to do?&12&: &14&*) notif(%NV%KILLED%)=(YES) then bignicesay(m:mark,q:quit,r:reply,s:Show again,n:next message,p:previous message,k:kill,o:Forward,h:help,i:inbox,c:compose message) if(%NV%KILLED%)=(YES) then bignicesay(m:mark,q:quit,r:reply,s:Show again,n:next message,p:previous message,k:unkill,o:Forward,h:help,i:inbox,c:compose message) if (%msgattach%)=(Y) then bignicesay(d:Download Attach) If (%SEC%)=(100) then BigNiceSay(u:User Record) notif(%NV%KILLED%)=(YES) then bigif (f:flagasnew,m:mark,o:forw,q:qdisp,s:banyway,r:reply,p:previous,k:kill,n:next,h:help2,u:userrec,i:inbox,c:compose) if(%NV%KILLED%)=(YES) then bigif (f:flagasnew,m:mark,o:forw,q:qdisp,s:banyway,r:reply,p:previous,k:unkill,n:next,h:help2,u:userrec,i:inbox,c:compose) if (%msgattach%)=(Y) then bigif (d:downatt) if (%RESP%)=(<CR>) then goto (next) ;number(%RESP%) ;iftrue (goto (nread)) setequal(s=5) goto (inv2) *flagasnew MsgSetBit(%MSGNUMBER%,10,0) Goto(inbox) *mark loadsub(control\macros\markmess.ctl) SetEqual(/nvstatus=REPEAT) ;goto (repeat) *help2 display(display\help\readn,/:SEC/) goto (reading) *downatt zap(%pbtemp%varr.%NODE%,%var%R) linefeed(1) LoadSub(control\macros\savevars.ctl) loadsub(control\DOWNATT.CTL) Loadsub(control\macros\restvars.ctl) goto (aGMail) *forw SetNv(i=%VAR%I) SetNv(w=%VAR%W) loadsub(control\macros\messforw.ctl) SetEqual(i=%NV%I%) SetEqual(w=%NV%W%) SetNv(i=) SetNv(w=) if (&g)=(1) then goto (inv2) ;goto (repeat) Goto(agmail) ; show original message again *marked ; appears to be a useless label setequal(w=1) setequal(/nvreadtype=1) setequal(u=0) goto (next) *userrec EnufSec(100) IfNotTrue(Goto(inv2)) LoadSub(control\macros\savevars.ctl) *WhichOne Say(&CR&&15&Load User Record of person message is Addressed (&12&T&15&)o or Sent (&12&B&15&)y? &14&*) MenuKey(%CRON%*) BigNiceSay(T:To,B:From) BigIf(T:UTo,B:UFrom,<CR>:AGMail) Say(&CR&&12&Invalid selection. Please try again...) Goto(WhichOne) *UTo SetNv(editor=%MSGTO%) Goto(LoadRec) *UFrom SetNv(editor=%MSGFROM%) *LoadRec ClearScr SetEqual(l=1) LoadSub(control\ued1.ctl) LoadSub(control\macros\restvars.ctl) SetEqual(/nveditor=) Goto(AGMAil) *rev if (&y)=(0) then goto (inv2) setequal(y=%var%f) setequal(w=-1) if (&y)=(0) then goto (inv2) goto (repeat) *Qdisp SetEqual(/nvstatus=INBOX) Return *Inv2 ;SetEquaL(/NVSTATUS=INV2) ;Return if (&s)=(10) then goto (abb) say(&CR&&CR&&12&Invalid selection! Please try again...&CR&) secpause(1) flushout Goto(Reading) *kill SetEqual(/nvme=%VAR%Y) SetEqual(y=%MSGNUMBER%) loadsub(control\macros\killmess.ctl) SetEqual(y=%NV%ME%) SetEqual(/nvme=) SetEqual(i=%NV%I%) ;NotIf(&g)=(0) then SetEqual(^%VAR%i=DELETED) Goto(Inbox) *Unkill LoadSub(Control\macros\unkill.ctl) Goto(inbox) *Inbox SetEqual(/nvstatus=INBOX) Return *next SetEqual(i=%NV%I%) Inc(i) If(&i)>(%NV%TOTMAX%) then Goto(lastmsg) SetEqual(/nvselected=%VAR%I) SetEqual(/nvi=%VAR%I) Goto(MovingDown) ;Goto(SetVars) *previous SetEqual(i=%NV%I%) ;Say(BEFORE I=%VAR%I) AddVar(%VAR%I+-1=i) ;Say(AFTER I=%VAR%I) If(&i)<(1) then Goto(firstmsg) SetEqual(/nvselected=%VAR%I) SetEqual(/nvi=%VAR%I) Goto(MovingUp) *SetVars ;Say(BEFORE I=%VAR%I) SetEqual(i=^:I^) ;Say(AFTER I=%VAR%I) ;Say(:1=^:1^ :2=^:2^) getmail(%var%i,,%var%w) ;Say(ARESP from the GetMail(%VAR%I,,%VAR%W)=%ARESP%) ;Enter Say($0$*) Goto(AgMail) *getHiLow himsg setequal(f=%ARESP%) lowmsg setequal(n=%ARESP%) ret *firstmsg Say(&CR&&12&This is the first message in your INBOX&CR&) SecPause(1) Inc(i) ;SetEqual(i=%NV%I%) SetEqual(/nvselected=%VAR%I) SetEqual(/nvstart=%VAR%I) SetEqual(/nvi=%VAR%I) SetEqual(i=^:I^) Goto(Inbox) ;Goto(SetVars) *lastmsg Say(&CR&&12&This is the last message in your INBOX&CR&) SecPause(1) AddVar(%VAR%I+-1=i) SetEqual(/nvselected=%VAR%I) SetEqual(/nvi=%VAR%I) SetEqual(i=^:I^) Goto(Inbox) ;Goto(SetVars) *MovingUp SetEqual(/nvtemp=%NV%SELECTED%) NotIf(%NV%SELECTED%)>=(%NV%START%) then Goto(QuickFix) ; SetEqual(i=%NV%SELECTED%) ; AddVar(%VAR%I+-1=i) SetEqual(/nvselected=%VAR%I) SetEqual(/nvscreen=REFRESH) SetEqual(i=%NV%SELECTED%) AddVar(%VAR%I+3=q) setequal(y=^:I^) Goto(SetVars) *QuickFix ;AddVar(%NV%START%+-1=i) If(&i)<(1) then SetEqual(i=%NV%TOTMAX%) SetEqual(/nvselected=%VAR%I) Inc(i) AddVar(%VAR%I+-%NV%SCREENLEN%=i) Inc(i) SetEqual(/nvstart=%VAR%I) SetEqual(/nvscreen=NORMAL) Goto(SetVars) endif SetEqual(/nvstart=%VAR%I) SetEqual(/nvscreen=NORMAL) SetEqual(/nvselected=%VAR%I) Goto(SetVars) *MovingDown SetEqual(/nvtemp=%NV%SELECTED%) ;SetEqual(i=%NV%SELECTED%) NotIf(&i)<=(%NV%MAX%) then SetEqual(/nvselected=%VAR%I) AddVar(%VAR%I+-%NV%SCREENLEN%=i) Inc(i) Inc(i) SetEqual(/nvstart=%VAR%I) SetEqual(i=%NV%SELECTED%) Goto(SetVars) Endif SetEqual(/nvselected=%VAR%I) SetEqual(/nvscreen=REFRESH) SetEqual(i=%NV%SELECTED%) AddVar(%VAR%I+3=q) setequal(y=^:I^) Goto(SetVars) *reply ;SetEqual(/nvnum=%VAR%I) loadsub(control\macros\reply.ctl) ;SetEqual(i=%NV%NUM%) SetEqual(i=%NV%SELECTED%) ;Say(i=%VAR%I) SetEqual(/nvnum=) goto (setvars) *compose LoadSub(control\macros\savevars.ctl) Loadsub(control\macros\enter.ctl) LoadSub(control\macros\restvars.ctl) Goto (agmail) *attroutine ;say (&12&* &14&File Attached: &3&%MSGATTNAME%) if (%MSGPVT%)=(PRIVATE) then setequal(s=10) say (&12&* &14&File Attached: &3&%MSGATTNAME% *) If(%STOREDEXT%)=() then size(%ATTPAT%%ATTN0%.%ATTEXT%) NotIf(%STOREDEXT%)=() then size(%ATTPAT%%ATTN0%.%STOREDEXT%) Say((%ARESP% bytes -- *) if (%local%)=(TRUE) then goto (localatt) say(Time to download: *) TTime(%ARESP%) Say(%ARESP%)) ret *localatt if (%storedext%)=() then say (Stored in %ATTPAT%%ATTN0%.%ATTEXT%)) if (%storedext%)<>() then say (Stored in %ATTPAT%%ATTN0%.%STOREDEXT%)) ret KILL2CTLKloadsub(control\exitwip.ctl) if (%MULTI%)=(TRUE) then goto (start) say(&CR&&11&Sorry, %FNAME%, this system is not running the Multinode version of the) say(Powerboard BBS Package.&CR&&CR&&3&If you feel this would be a good addition to the BBS, please contact) say(your Sysop, %SYSOP%.&CR&) enter goto (doret) *start loadsub(control\macros\mwho.ctl) menuask(%CRON%&CR&&3&Enter number of the &11&node &3&to disconnect (ENTER=Quit)&12&: &15&*) if (%resp%)=(<CR>) then goto (doret) ;killnode(%resp%) *doret if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return NODED2CTL$loadsub(control\exitwip.ctl) if (%MULTI%)=(TRUE) then goto (start) say(&CR&&11&Sorry, %FNAME%, this system is not running the Multinode version of the) say(Powerboard BBS Package.&CR&&CR&&3&If you feel this would be a good addition to the BBS, please contact) say(your Sysop, %SYSOP%.&CR&) enter goto (doret) *start loadsub(control\macros\mwho.ctl) menuask(%CRON%&CR&&3&Enter &11&node &3&number to shut down (ENTER=Quit)&12&: &15&*) if (%resp%)=(<CR>) then goto (doret) ;nodedown(%resp%) *doret setnv(wipe=) setnv(wipmode=1) return NEWSDATECTL[*date Say(&CR&&15&Would you like to use today's date as the article date? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) If(%RESP%)=(Yes) then SetEqual(d=%DATE%) Get(&d,1,2) ; converts date from ##-##-## to ##/##/## SetEqual(/nvdate=%ARESP%) Get(&d,4,2) SetEqual(/nvdate=%NV%DATE%/%ARESP%) Get(&d,7,2) SetEqual(/nvdate=%NV%DATE%/%ARESP%) endif If(%RESP%)<>(Yes) then *ArtDate1 Say(&CR&&15& Enter the date for this article: &14&*) Picture(##/##/##) DateOk(%RESP%) IfNotTrue(Goto(InvDate2)) SetEqual(/nvdate=%RESP%) endif Say(&CR&&15&Enter the title for this article: &14&*) CAsk(%CRON%*) return *invdate Say(&CR&&12&That date is invalid. Please re-enter a new date...) Goto(Date) *invdate2 Say(&CR&&12&That date is invalid. Please re-enter a new date...) Goto(ArtDate1) NEWSDISPCTLZ ClearScr InpOpen(%nv%newstemp%HDR%VAR%A.%VAR%B) InpRead SetEqual(/nvdate=%ARESP%) Say(&15&%ARESP%) InpRead SetEqual(/nvtitle=%ARESP%) Say(&14&%ARESP%) InpClose seek(%nv%newstemp%news%var%a.%var%b) ifnottrue(zap(%nv%newstemp%news%var%a.%var%b,.)) View(%nv%newstemp%NEWS%VAR%A.%VAR%B) say(&CR&&11&[ Article %nv%curart% of %nv%highart% ]) Say(&15&Article Options: &3&(&11&N&3&)ext Article, (&11&P&3&)revious Article, (&11&E&3&)dit Article,) Say((&11&A&3&)dd Article, (&11&K&3&)ill Article, (&11&U&3&)pdate Newsletter, (&11&S&3&)how Again, (&11&Q&3&)uit? &14&*) MenuKey(%CRON%) return NEWSSAVECTLΘ SetEqual(a=%NV%A%) SetEqual(b=%NV%B%) Say(&CR&&14&Updating Article...*) Kill(%nv%newstemp%NEWS%VAR%A.%VAR%B) Capture(%nv%newstemp%NEWS%VAR%A.%VAR%B) LoadSub(control\macros\justify.ctl) SetNv(ntstatus=) Say(Done!) return EXEXCTLreturn return COMMENTCTL7 *tt0 if (%nv%wipmode%)=(1) then goto (wipl) ;if (%graphics%)=(WIP) then goto (wipl) if (%graphics%)=(RIP) then clearscr display(display\comment) SetEqual(o=/:LASTMSG/) setnv(lconf0=) Say(&15&Would you like to leave a comment? (&12&Y&15&/&12&N&15&)&14&*) Back(4) YesNoAsk(*) NotIf(%RESP%)=(Yes) then Return *stc0 setnv(norefresh=) loadsub(control\exitwip.ctl) setnv(lconf0=/:lastmsg/) If (&q)=(10) Then goto (lve) setequal(t=%RESP%) Say(&CR&&15&What is this comment about?&12&: &15&( )&14&*) Back(18) SetFill(Question) cAsk(%CRON%%LEN%17%*) killperc if (%RESP%)=(<CR>) then goto (doret) SetEqual(b=%RESP%) SetEqual(/nvsubject=%RESP%) SetActivity(Leaving comment...) Log(--,Leaving Comment Re: %RESP%) linefeed(1) *lve setequal(a=%sysop%) SetEqual(/nvaddressee=%sysop%) SeekUser(%var%a) SetEqual(c=%NDNUMB%) SetEqual(/nvtousernum=%NDNUMB%) SetEqual(/nvaddresser=%NAME%) SetEqual(/nvccs=0) SetEqual(/nvcc1=) SetEqual(o=/:LASTMSG/) SetEqual(/lastmsg=1) SelArea(1) SetEqual(y=0) If (%ARESP%)=(No) Then SetEqual(c=0) InitTxt SetEqual(k=30) LoadSub(control\macros\menter.ctl) SetEqual(/lastmsg=%nv%lconf0%) setnv(lconf0=) SelArea(%ARESP%) goto (doret) *wipl setnv(norefresh=1) *tryagain0 writeln(Would you like to leave a comment to the Sysop?) setequal(c=13~Would you like to leave a comment to the Sysop?~Comment to Sysop~2~) jump (wipc) *gi0 comlineinput(180,l) if (%aresp%)=(24) then loadmem(control\timeout.ctl) *tryr setequal(r=%resp%) ascii if (%aresp%)=(21) then goto (tryagain0) if (%aresp%)=(6) then len(%var%r) if (%aresp%)=(1) then goto (gi0) get(&r,2,1000) setequal(/resp=%aresp%) goto (tryr) endif if (%resp%)<>(2) then return goto (stc0) *doret if (%nv%wipe%)=() then return setnv(wipe=) setnv(wipmode=1) return *GCHAR COMPRINT(%NV%TEXT%) SETEQUAL(A=0) DO COMKEY ASCII IF(%ARESP%)=(21) THEN GOTO(GCHAR) INC(A) IF(&B)=(-1) THEN IF (%RESP%)<>() THEN RET IF(%ARESP%)=(&B) THEN RET IF(&A)>(200) THEN RET IF(%RESP%)<>() THEN SETNV(PBACK=%NV%PBACK%%RESP%) DELAY18TH(2) LOOP *WIPC LOCALKEY(1) IFNOTTRUE(GOTO(NOLKEY)) SYSKEYCHECK SETEQUAL(/RESP=) SETEQUAL(/RESP=) *NOLKEY CCARRIER IF(%ARESP%)=(0) THEN GOTO (NOC0) CHECKSUM(%VAR%C) SETEQUAL(B=6) SETNV(TEXT=$%ARESP%%VAR%C%C%13%) SETNV(PBACK=) JUMP(GCHAR) IF(%ARESP%)<>(6) THEN JUMP(GCHAR) setequal(c=%aresp%) SETEQUAL(/IBUFF=%NV%PBACK%) LEN(%NV%PBACK%) SETEQUAL(/IBUFF0=%ARESP%) SETEQUAL(/ARESP=%VAR%C) RET *NOC0 log(<<,Carrier lost.) quitbbs